Это обычная проблема при использовании macports, и вы устанавливаете для переменной DYLD_LIBRARY_PATH
значение /opt/local/lib
. Есть несколько библиотек в macports, которые могут помешать работе с системными библиотеками, и когда вы находитесь в командной строке, это приведет к тому, что программы не будут запущены в этом случае.
Временные решения заменяют переменную для оболочки, но это может привести к проблемам с запуском других приложений macports. Если вы просто работаете из командной строки, вы можете создавать функции в вашем .bashrc
, которые запускают команды без переменной, например.
java()
{
env DYLD_LIBRARY_PATH= java "[email protected]"
}
и аналогичные для JAVAC и т.д. Это позволит вам оставить переменную, определенную, но предотвратить помехи при вызове этих конкретных инструментов командной строки.
Я переехал от macports к homebrew, который немного лучше себя ведет в этом отношении - он вообще отказывается вкладывать вещи в путь, который мешает системным библиотекам, не заставляя проблему - это личный выбор, хотя , и не рекомендует вам переключаться.
Похоже, что у вас установлено 'DYLD_SEARCH_PATH' значение, в том числе'/opt/local/lib', которое содержит копию 'libiconv.2.dylib', которая мешает системной копии той же библиотеки. Я предполагаю, что вы установили macports? Если вы отмените переменную, вы сможете скомпилировать java-программу. – Petesh
Да, вы правы. Я установил DYLD_LIBRARY_PATH как/opt/local/lib и macports. Я сбросил этот DYLD_LIBRARY_PATH на пустой, и он сработал. – cbear1985