2012-08-16 23 views
2

我已經在Fedora 17上使用Eclipse Juno編寫了一個Java應用程序。我已經安裝了JRE 1.7,但是我相信Java更改了1.6。一切工作正常。然後,我可以構建一個運行在Windows 7虛擬機上的.jar文件,而不會出現任何問題。但是,如果我嘗試在學校計算機上運行它(Windows 7 java version "1.6.0_18" Java(TM) SE Runtime Environment (build 1.6.0_18-b07) Java HotSpot(TM) Client VM (build 16.0-b13, mixed mode, sharing)Java代碼兼容性問題(我的二進制文件也不起作用)

它給出了一個例外,如:java.lang.IllegalArgumentException: cannot add to layout: constraint must be a string。這顯然是與CardLayout有關,我相信它是一個標準的Swing組件。

我正在使用miglayout庫和sqlite-jdbc driver如果可能有關。

我真的很感謝這個幫助

+0

嘗試使用JDK 6進行編譯。 – Thilo 2012-08-16 10:23:55

+0

@Thilo與JDK 6不同,但在編譯器中使用了--target標誌。 – 2012-08-16 10:24:44

+0

不,嘗試使用JDK 6進行編譯。--target --source不足(它們只是指定字節碼和源代碼級別),還需要適當的運行時庫(以檢查當時存在的API)。很難得到正確的。最安全的使用JDK 6進行編譯。 – Thilo 2012-08-16 10:28:53

回答

0

我發現了這個問題。

cardLayoutPanel是一個JPanel cardLayout明顯 標識符是一個字符串

cardLayoutPanel.add(container); 
cardLayout.addLayoutComponent(container, identifier); 

原來,在Java 1.6的這並不能真正工作,因爲它實際上應該是:

cardLayoutPanel.add(container, identifier); 

無第二行 Java 1.7不會因爲某種原因而投訴。奇怪的。