我正在尝试从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.
即使它只是一个警告 - 我试图在类文件上运行java,这导致
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)
我搜索了stackoverflow并发现了一个建议使用交叉编译的帖子 - 我已经尝试过了
javac -target 1.6 ControlGpioExample.java
我如何知道要使用哪个目标?我是否只是继续经历它们直到它起作用?!
由于
答案 0 :(得分:2)
这不是您正在编译的代码,而是问题 - 这是您正在编译的代码,在pi4j-core.jar中,似乎是用Java 7构建。
我强烈建议你升级JDK,基本上。要么是,要么:
答案 1 :(得分:0)
您正在使用Java 6(版本50)来编译使用已使用Java 7(版本51)编译的库的代码。要么升级你的编译器,要么找到用Java 6编译的pi4j版本,你应该好好去。升级到JDK7将是最佳选择。
作为参考,以下是版本号及其对应的内容:
答案 2 :(得分:0)
请查看pi4j(pi4j-native)构建要求。我从here
取了它们因此,正如其他答案已经提出的那样,最好升级到JDK 7.
基本上,pi4j可能会使用JDK7中现有的基于JDK6的编译器无法处理的一些功能。
答案 3 :(得分:0)
当您使用更高版本的JDK编译Java代码并尝试使用较低版本的JDK运行时,会发生此问题。你知道你使用的是哪个版本的Java吗?