2013-10-29 127 views
-1

我試圖從linux命令行運行一切,我也比較新。從命令行編譯問題

我試圖編譯它使用一些外部庫的類,當我這樣做的javac classname.java我得到警告....

It is recommended that the compiler be upgraded. 
warning: /opt/pi4j/lib/pi4j-core.jar(com/pi4j/io/gpio/GpioPinOutput.class): major version 51 is newer than 50, the highest major version supported by this compiler. 

即使它只是一個警告 - 我曾嘗試我已經通過

javac -target 1.6 ControlGpioExample.java 
01嘗試 - 然後在類文件導致

Exception in thread "main" java.lang.UnsupportedClassVersionError: com/pi4j/io/gpio/GpioFactory : Unsupported major.minor version 51.0 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
    at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
    at ControlGpioExample.main(ControlGpioExample.java:9) 

我搜索計算器,發現一個帖子建議使用交叉編譯運行java

我如何知道要使用哪個目標?我是否繼續瀏覽它們直到它有效?

感謝

+0

一個嚴重的問題downvote?我試過自己,我發佈了我所做的所有搜索後stackoverflow – Biscuit128

+0

如果你沒有找到重複,你沒有足夠的搜索:) – 2013-10-29 20:36:00

+0

所以我得到了一個投票...輝煌 – Biscuit128

回答

2

這不是你編譯代碼這就是問題所在 - 它是你正在編譯代碼,在pi4j-core.jar添加,這似乎已建成使用Java 7

我強烈建議你基本上升級JDK。如果不是這樣,或者:

  • 查找pi4j的版本,這是與Java建6
  • 自己重建它
+0

你的意思是JDK? JRE不包含'javac'。 :) –

+0

@VivinPaliath:兩者,真的:) –

0

您使用的是Java 6(版本50)編譯使用代碼使用Java 7(版本51)編譯的庫。要麼升級你的編譯器,要麼找到用Java 6編譯的pi4j版本,你應該很好。升級到JDK7將是最佳選擇。

作爲參考,這裏有版本號和什麼它們對應於:

  • J2SE 7 = 51
  • J2SE 6.0 = 50
  • J2SE 5.0 = 49
  • JDK 1.4 = 48
  • JDK 1.3 = 47
  • JDK 1.2 = 46
  • JDK 1.1 = 45
0

請看看pi4j(pi4j-native)構建要求。我把他們從here

  • GCC 4.6.3或更高版本(命令和apt-get安裝GCC)
  • 混帳核心(命令和apt-get安裝混帳核心)
  • 的工作JDK(OpenJDK的或Oracle JDK)(sudo apt-get安裝openjdk-7-jdk)
  • 有效定義的JAVA_HOME環境變量
  • wiringPi源碼和平臺編譯的二進制文件(...)

所以,作爲其他的答案已經表明,這將是最好升級到JDK 7

基本上,pi4j可以使用一些在JDK7可用的功能,它是目前基於JDK6編譯器不能處理。

0

當您使用更高版本的JDK編譯Java代碼並嘗試與較低版本的JDK一起運行時,將會發生此問題。你知道你使用的是哪個版本的Java嗎?