我剛剛將java程序切換爲使用java 1.7中的openjdk6,現在它不會編譯。任何人都可以幫忙,我是一個很長時間的開發人員,但在Java中是新手。將編譯器從JRE1.7更改爲OpenJdk6時出錯:java.lang.NoSuchFieldError:系列
Abnormal build process termination:
Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:622)
at org.jetbrains.jps.cmdline.Launcher.main(Launcher.java:51)
Caused by: java.lang.NoSuchFieldError: family
at sun.nio.ch.ServerSocketChannelImpl.initIDs(Native Method)
at sun.nio.ch.ServerSocketChannelImpl.<clinit>(ServerSocketChannelImpl.java:346)
at sun.nio.ch.SelectorProviderImpl.openServerSocketChannel(SelectorProviderImpl.java:51)
at java.nio.channels.ServerSocketChannel.open(ServerSocketChannel.java:92)
at sun.nio.ch.PipeImpl$Initializer.run(PipeImpl.java:89)
at java.security.AccessController.doPrivileged(Native Method)
at sun.nio.ch.PipeImpl.<init>(PipeImpl.java:140)
at sun.nio.ch.SelectorProviderImpl.openPipe(SelectorProviderImpl.java:45)
「主」 的模樣
import app.Controller;
import quickfix.ConfigError;
import static libs.Library.log;
public class Main
{
public static void main(String[] args)
{
try {
log("Starting...");
Class.forName("com.mysql.jdbc.Driver").newInstance();
Controller client = new Controller();
client.login();
synchronized (client)
{
try {
client.wait();
}
catch (Exception e) {}
}
}
catch (ConfigError e) {
log("Config error: " + e.getMessage());
}
catch (Exception e) {
log(e.getMessage());
}
}
}
您有任何正當理由使用OpenJDK6嗎? – gyorgyabraham
這可能是由於你的MySQL驅動程序。檢查其版本。它可能需要Java 1.7。 – ovunccetin
對所有來源進行清理+構建。 –