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

Java编译错误:Mac

皇甫伟彦
2023-03-14
问题内容

我在Mavericks上运行Eclipse并安装了1.7 JDK时遇到编译问题:

类文件的版本错误为51.0,应为49.0

因此,由于这看起来像javac版本控制问题,因此我删除了所有Java版本。安装了1.7_51,安装了Apple提供的1.6版本,以便运行Eclipse,更改了符号链接,因此默认值为1.7。与以前相同的问题,同一项目无法编译,尽管其他项目可以编译,

下一步,将问题分解为裸露的骨骼,即从等式中删除蚂蚁等-
所使用的Test.java文件没有方法,只有System.out.println()作为主要方法。cd到包含源文件的目录,并运行编译器以指定javac的完整路径,并检查是否未设置JAVA_HOME:

$ /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/javac
Test.java -verbose -extdirs。-endorseddirs。-cp。-bootclasspath
/库/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar
-version

输出:

javac 1.7.0_51

[解析启动的Test.java]

[解析完成67ms]

[源文件的搜索路径:[。]]

[类文件的搜索路径:[/ Library / Java / JavaVirtualMachines / jdk1.7.0_51.jdk /
Contents / Home / jre / lib / rt.jar ,.]]

[加载/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar(java/lang/Object.class)]

Test.java:11:无法访问java.lang.Object错误的类文件:/Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar(java/lang/Object.class

类文件的版本错误为51.0,应为49.0

请删除或确保它出现在类路径的正确子目录中。公开课测试{^

[总336ms] 1个错误

笨拙的。

有任何想法吗 ?

在相关说明中,我似乎无法使javac接受高于1.5 / 5的-target选项:

$ /Library/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/bin/javac
Test.java -verbose -extdirs。-endorseddirs。-cp。-bootclasspath
/库/Java/JavaVirtualMachines/jdk1.7.0_51.jdk/Contents/Home/jre/lib/rt.jar
-version -target 1.7

结果是:

javac 1.7.0_51

javac:无效的目标版本:1.7


问题答案:

经过大量讨论后发布的讨论补丁-所有这些补丁都没有成功-我求助于使用dtrace来查看运行命令时javac正在访问哪些文件。

在终端中(您需要安装XCode)

sudo dtrace -s /dev/stdin

syscall::open*:entry

{

   printf("%s %s", execname, copyinstr(arg0));

}

<Ctrl-D>

在我发现埋在javac的文件访问活动中的另一个终端实例中运行命令行- 考虑到命令行选项,这相当广泛,给人的印象是您限制它在哪里寻找文件 -我发现

打开:进入javac /Users/me/Library/Java/Extensions/tools.jar

我不知道我有一个本地扩展文件夹.....

删除它的内容可以解决此问题。

因此,这是由旧罐子引起的版本不匹配(正如其他瓶子所发现的),在我的情况下,问题是找到它们



 类似资料:
  • 我正在与ATM案例研究一起工作,从Deitel java如何编程第9版。 案例研究在第13章,第546页(万一有人有这本书并想要查看),我确信我的代码是100%如书中所建议的那样。 我已经设置了所有的代码,但当我尝试运行程序时,它给了我以下信息: 当我试图从类路径使用terminal编译类时,它给出了以下错误: 这是正在进行的课程:直截了当地往前走,但我似乎找不到问题所在。有人帮忙吗?

  • $/library/java/javavirtualmachines/jdk1.7.0_51.jdk/contents/home/bin/javac test.java-verbose-extdirs。-被认可的dirs。-CP。-bootclasspath/library/java/javavirtualmachines/jdk1.7.0_51.jdk/contents/home/jre/lib

  • 当我使用maven编译spark java程序时,我得到了一个编译错误,如下所示

  • 问题内容: 以下代码块在1.8.11中可以正常编译,但在1.8.20中会引发错误 我得到的错误是java:找不到适合过滤器的方法(com.google.common.base.Predicate) 在更新8和20之间是否存在会影响此代码的更改?我在两种情况下都使用相同版本的guava 17.0(最新版本),唯一的变化是Java中的更新版本。 任何帮助是极大的赞赏。 编辑 显示错误的行是 问题答案:

  • 生成失败,错误如下: [ERROR]未能执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:编译(默认编译)上的项目r esPonderhub:编译失败[ERROR] /X:/工作区/响应器HubWorkspace/响应器Hub/src/main/java/uk/org/响应器Hub/MemberServlet.java:[23,110]找

  • 我试图在这里运行一些来自ArcGIS github的示例代码。 当我在IntelliJ Community 2019中导入并尝试运行该项目时,我得到一个错误: 原因:org/openjfx/gradle/javafxplugin已由更新版的Java运行时(类文件版本55.0)编译,此版本的Java运行时仅识别52.0以下的类文件版本 同样的问题--但没有答案。 如何修复此错误?