我刚刚开始在MacOS上使用Java,并且使用javac编译第一个.java文件时出现以下错误。
dyld: Symbol not found: _iconv
Referenced from: /usr/lib/libcups.2.dylib
Expected in: /opt/local/lib/libiconv.2.dylib
in /usr/lib/libcups.2.dylib
Trace/BPT trap: 5
谁能解决这个问题?
解决方案如下:
使用macports时,这是一个常见问题,并且您将DYLD_LIBRARY_PATH
变量设置为具有/opt/local/lib
。 Macports中有一些库可能会干扰系统库,在这种情况下,当您进入命令行时将导致程序无法启动。
解决方法是未设置 shell 程序的变量,但这可能会导致运行其他macports应用程序时出现问题。如果您只是从命令行运行,则可以在.bashrc
中创建不带变量的函数来运行命令,例如
java()
{
env DYLD_LIBRARY_PATH= java "$@"
}
与javac等类似。这将允许您保留定义的变量,但可以防止在调用这些特定的命令行工具时产生干扰。
我已经从
macports移到
homebrew,这在这方面表现更好-它通常拒绝将东西放置在干扰系统库的路径中而不强制问题-尽管这是个人选择,但不是建议您进行切换。