当前位置: 首页 > 面试题库 >

OSX 10.9.2上的Java 1.7以1.5运行吗?

万俟炯
2023-03-14
问题内容

把我的头发拉出来。java -versionjavac -version这两个报表相同1.7.0_45,但是当我尝试编译我得到一个类文件错误的简单类:

> cat A.java
public class A {}

> javac A.java
A.java:1: cannot access java.lang.Object
bad class file: /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/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 A {}
       ^
1 error

当然,没有安装JDK 1.5。我不认为这甚至 一个JDK 1.5上运行OSX任何更多。

FWIW,这是包含“版本”和存根可执行文件的frameworks目录:

> ls -al /System/Library/Frameworks/JavaVM.framework/Versions/
total 64
drwxr-xr-x  11 root  wheel  374 28 Mar 09:03 .
drwxr-xr-x  12 root  wheel  408 11 Mar 07:52 ..
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.4 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.4.2 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.5 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.5.0 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.6 -> CurrentJDK
lrwxr-xr-x   1 root  wheel   10 29 Oct 12:54 1.6.0 -> CurrentJDK
drwxr-xr-x   8 root  wheel  272 28 Mar 09:03 A
lrwxr-xr-x   1 root  wheel    1 29 Oct 12:54 Current -> A
lrwxr-xr-x   1 root  wheel    1 28 Mar 09:03 CurrentJDK -> A

我已经检查了通常的可疑对象,没有JAVA_HOME或CLASSPATH环境变量,并且没有安装1.5也不重要。如果安装JDK 8,我也会得到完全相同的行为。

有人知道这是什么原因吗?


问题答案:

好的,感谢这篇文章(Java编译错误:Mac),我找到了解决方案:

rm -rf ~/Library/Java/Extensions
sudo rm -rf /Library/Java/Extensions


 类似资料:
  • 我们正在hadoop 2.6集群上运行Flink 1.5.0纱线会话/料仓/纱线会话。但是,这不会启动任何TaskManager。日志显示Flink JobManager以领导者id 000000开始。。。在JobManager web界面中也没有任务管理器。当我们向这个jobManager提交flink作业时,一些TaskManManager会在执行作业的web界面上生成。这是Flink1.5.

  • 问题内容: 我正在尝试诊断Sun One 9.1应用服务器中的PermGen内存泄漏问题。为此,我需要获取JVM进程的堆转储。不幸的是,JVM进程是Windows上运行的1.5版。显然,没有一种触发堆转储的方法支持该设置。我可以让JVM在内存耗尽或关闭时进行堆转储,但是我需要能够在任意时间进行堆转储。 经常提到的两种获取堆转储的方法是使用jmap或使用HotSpotDiagnostic MBean

  • 问题内容: 使用JDK 1.6进行编译时,是否可以选择构建可在JRE 1.5上运行的Java代码? PS:我是Java新手。 问题答案: 如果使用1.6编译代码,则它将无法在1.5上运行。如果您希望它在1.5中运行,则可以使用1.5编译代码,并且它可以在两者上运行。 尝试使用1.5进行编译,如果有错误,则将其发布。无法在1.5上编译的唯一方法是,如果在代码中使用特定的1.6增强功能。 回答真正的问

  • 问题内容: 注:请不要 不 上交叉编译的所有危险评。谢谢。 我遇到一种情况,我们需要为Java 5 JVM编译Java 6源(以确保JAX-WS用法正确)。以前我们使用ant ant脚本(显然可以)完成了此操作,但是在迁移到Maven之后,我们发现它最终以javac抱怨: 是否有 任何 对Linux(Ubuntu的11.10,86),其中使用javac可以做到这一点的Java分配? 编辑:似乎没有

  • 我已经在NetBeans中创建了一个Java项目,自动构建的分发文件(.jar)在我的Ubuntu15.04AMD64机器上运行得非常好。 我想在发布它之前确保它在windows上运行,但在windows 7 32位机器上测试后,我发现它不工作。下面是错误消息的屏幕截图。 我可以猜到一些问题--因为它谈到了一个。regex错误。我并没有在代码中真正使用regex,而是使用string.split。

  • 我最近将应用程序中的Spring Boot版本从1.4更新到了1.5.1,我注意到在AWS上部署到弹性Beanstalk后,healtch检查开始失败。 在我们的AWS环境中,所有的通信都是通过HTTPS进行的,包括health(健康),它以前在Spring Boot和Acture1.4中工作得很好,但在Verson1.5中,我们开始在Actures healthendpoint上得到401。 有