2014-01-22 16 views
0

我剛剛將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()); 
     } 
    } 
} 
+0

您有任何正當理由使用OpenJDK6嗎? – gyorgyabraham

+2

這可能是由於你的MySQL驅動程序。檢查其版本。它可能需要Java 1.7。 – ovunccetin

+0

對所有來源進行清理+構建。 –

回答

1

堆棧跟蹤是表明你正試圖從IntelliJ IDEA的內部運行它。 Injellij IDEA不保證它能在OpenJDK上工作。來自https://intellij-support.jetbrains.com/entries/23455956-Selecting-the-JDK-version-the-IDE-will-run-under的報價

Using OpenJDK is not recommended, it has known visual and performance problems that affect some users. Use on your own risk if Oracle JDK has more severe issues on your system.

嘗試編譯並從命令行運行。但是如果你想繼續使用Intellij IDEA切換到Oracle JDK。

+0

即時只接受你的答案,因爲我沒有其他辦法來結束這個問題,而不是刪除它,我想保留它作爲記錄。我只是繼續使用Java JRE 1.7,所以它不再是一個問題。 – Christian