我刚开始在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
有人能解决问题吗?
答案 0 :(得分:3)
使用macport时这是一个常见问题,您将DYLD_LIBRARY_PATH
变量设置为/opt/local/lib
。 macports中有一些库可能会干扰系统库,当你在命令行使用时会导致程序无法启动。
解决方法是取消设置shell的变量,但这可能会导致运行其他macports应用程序的问题。如果您只是从命令行运行,则可以在.bashrc
中创建运行命令的函数,而不使用变量,例如。
java()
{
env DYLD_LIBRARY_PATH= java "$@"
}
和javac等类似。这将允许您保留定义的变量,但在调用这些特定的命令行工具时可以防止干扰。
我已经从macports转移到homebrew,这在这方面表现得更好 - 它通常拒绝将事情放在干扰系统库的路径上而不会强迫问题 - 但这是个人选择的事情,并不建议你转换。