Javac 1.7版无法为目标1.7构建

我试图在Linux Mint系统上使用Sun Java JDK 1.7.0_17编译Java代码,但是我遇到了这个问题.

$javac  -version -target 1.7 
javac 1.7.0_17
javac: invalid target release: 1.7

-target 1.6也不起作用.目标1.5工作,但我得到一个版本问题,

$javac  -version -target 1.5 HelloWorld.java 
javac 1.7.0_17
HelloWorld.java:2: cannot access java.lang.Object
bad class file: /usr/lib/jvm/jdk1.7.0_17/jre/lib/rt.jar(java/lang/Object.class)
class file has wrong version 51.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
class HelloWorldApp {
^
1 error

是否存在sun java目录之外的可用java目标列表?

我没有指定ClassPath或Javahome,设置它们没有帮助. jcontrol没有帮助.
我也试过1.7.0_15,结果相似.

解决方法:

我追了一个涉及Ubuntu,Netbeans和两个JDK的类似问题:openJDK和oracleJDK.违规(旧的和不相关的)文件最终位于/usr/java / packages中并被简单删除.

我收到了:

# javac -version hello.java
javac 1.7.0_21
hello.java:3: cannot access java.lang.Object
bad class file: /usr/lib/jvm/java-7-oracle/jre/lib/rt.jar(java/lang/Object.class)
class file has wrong version 51.0, should be 49.0
Please remove or make sure it appears in the correct subdirectory of the classpath.
public class hello {
       ^
1 error

更重要的是,我找到了有问题的文件:

# javac -verbose -version hello.java

-verbose选项列出了类文件的搜索路径.

我调查期间探讨的其他领域是:

>使用#echo $JAVA_HOME的环境变量JAVA_HOME的值
>使用#echo $JAVA_HOME的环境变量PATH的值
>使用#echo $JAVA_HOME的环境变量CLASSPATH的值
>#update-alternatives –config javac的更新替代方案
> #galternatives的更新替代品
> Netbeans使用的JDK使用netbeans_jdkhome =开关在/usr/local/netbeans-7.3/etc/netbeans.conf中设置.请注意,此开关会覆盖update-alternatives

上一篇:练习题知识点系列之详解Javac命令


下一篇:java – JDK8和JDK10上三元运算符的行为差异