Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javac版本1.7无法为目标1.7构建_Java_Version_Javac_Target - Fatal编程技术网

Javac版本1.7无法为目标1.7构建

Javac版本1.7无法为目标1.7构建,java,version,javac,target,Java,Version,Javac,Target,我试图在LinuxMint系统上用Sun Java JDK1.7.017编译Java代码,但我遇到了这个问题 $ javac -version -target 1.7 javac 1.7.0_17 javac: invalid target release: 1.7 -目标1.6也不起作用。目标1.5可以工作,但我遇到了版本问题 $ javac -version -target 1.5 HelloWorld.java javac 1.7.0_17 HelloWorld.java:2:

我试图在LinuxMint系统上用Sun Java JDK1.7.017编译Java代码,但我遇到了这个问题

$ javac  -version -target 1.7 
javac 1.7.0_17
javac: invalid target release: 1.7
-目标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目标的列表

我没有指定类路径或Javahome,设置它们没有帮助。jcontrol没有帮助。
我也尝试过使用1.7.0_15,得到了类似的结果。

我能够很好地编译一个文件。我插入文件的目录,然后运行

javac -version -target 1.7 App.java 
(App.java是文件名)

我能够运行javac-version,它还给了我:

javac 1.7.0_17
很明显,它知道我使用的是哪个版本的Java

如果我像你那样做:

javac -version -target 1.7
如果我只运行javac-version,我会得到与此完全相同的消息:

javac 1.7.0_17
因此,运行-version和-target1.7似乎意味着-target1.7被忽略

我确实指定了JAVA_HOME

无论如何,为什么需要指定-target1.7?如果您使用的是1.7,那么这应该是默认值


在您的第一篇源代码帖子中,您的意思是说“javac HelloWorld.java”吗?因为这应该是我认为你会想要运行的命令。不是“javac-version-target1.7”。更新:我重新安装了Mint,问题就解决了。 应该说,这不是我喜欢的选择

我还没有比较两种系统之间的差异


有人能想到1.7编译器是如何不构建1.7代码的吗?

我找到了一个类似的问题,涉及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选项列出类文件的搜索路径

我在调查期间探索的其他领域包括:

  • 带有
    的环境变量JAVA_HOME的值echo$JAVA_HOME
  • 带有
    #echo$JAVA_HOME的环境变量PATH的值
  • 带有
    #echo$JAVA_HOME
  • 使用
    #update alternations--config javac
  • 使用
    #galternatives
  • Netbeans使用的JDK设置在/usr/local/Netbeans-7.3/etc/Netbeans.conf中,带有
    Netbeans\u jdkhome=
    开关。请注意,此开关将覆盖更新选项
诊断:

您可以通过运行“mvn--version”来查看Maven使用的java版本

Debian的解决方案:

mvn脚本通过查找javac(
哪个javac
)在内部设置JAVA_HOME env变量。因此,如果您同时安装了多个java版本,例如JDK 6和JDK 7,并使用Debian替代系统在它们之间进行选择,即使您将“java”的替代版本更改为JDK 7,mvn仍将使用JDK 6。您还必须更改“javac”的替代选项。例如:

# update-alternatives --set javac /usr/lib/jvm/java-7-openjdk-amd64/bin/javac

我不需要具体说明(嗯,不需要)。如果我没有指定,它默认使用1.5,这给了我错误的版本错误?也许那个版本的java胜过了你安装的那个版本?我也这么认为。最初,Mint安装了OpenJDK1.7和1.6。从未使用过1.5(既不是JDK也不是JRE)。我把它们都吹走了,安装了Sun 1.7.0_15,现在是17。都不行。恐怕我不是linux专家,听起来你的问题不在于你对编译器的命令。很抱歉
which javac
的输出是什么?
which javac
通过/etc/alternations来解析
/usr/lib/jvm/jdk1.7.017/bin/javac
哦,但那太接近了。正如您所预测的,我发现从/usr/java/packages/lib/ext目录中提取了一些旧的jar文件。通过删除它们,它将它们从冗长的列表中删除,但在其他方面没有效果。我仍然得到了错误的版本错误。我想知道是否可以帮助您找到有问题的jar?我只是尝试了VersionChecker,但似乎没有帮助,除了1.7 Java兼容性为空,
Major.Minor版本:51.0 Java兼容性:
。由于网页只引用1.6版本,我猜它还没有为jdk7重新构建,而不是我的问题。非常感谢您,我曾经为受影响的javah和ant遇到过同样的问题,浪费了太多时间寻找解决方案。在将所有文件移出/usr/java/packages/lib/ext之后,编译了一个简单的文件,它运行良好。该目录中充满了安装此为澳大利亚商业政府应用程序的文件