当前位置: 首页 > 知识库问答 >
问题:

在Maven和Eclipse中努力更新JRE依赖关系

经福
2023-03-14

我正在尝试在Eclipse中构建一个大型开源项目;它使用Maven,所以我安装了各种插件(m2eclipse等),但我对这个设置有点陌生。

我可以毫无问题地构建和运行我感兴趣的特定JAR。但是,当新构建的JAR尝试打开一个大ZIP文件时,我会得到这样的结果:

Exception in thread "main" java.lang.RuntimeException: java.util.zip.ZipException: invalid CEN header (bad sig
nature)
        at org.opentripplanner.graph_builder.impl.GtfsGraphBuilderImpl.buildGraph(GtfsGraphBuilderImpl.java:17
9)
        at org.opentripplanner.graph_builder.GraphBuilderTask.run(GraphBuilderTask.java:127)
        at org.opentripplanner.graph_builder.GraphBuilderMain.main(GraphBuilderMain.java:51)
Caused by: java.util.zip.ZipException: invalid CEN header (bad signature)
        at java.util.zip.ZipFile.open(Native Method)
        at java.util.zip.ZipFile.<init>(Unknown Source)

我做了一些研究,似乎这个错误意味着java。util。ZipFile无法读取该文件,因为它是ZIP64格式。显然,这在Java 1.7中是固定的,所以我尽职尽责地在OS X上更新了JDK,并试图通过在Eclipse中右键单击Maven项目来更改它,然后更改项目方面,这似乎反过来又将该项目中的JRE库更新为1.7:

然而,这不起作用——即使重新构建了整个项目,我仍然会得到错误。

有没有可能旧的java.util.zip仍然被从某个地方拉进来?我不太熟悉链接在Java中是如何工作的,旧的JDK可以像这样“嵌入”在依赖项中吗?还是java.util.zip只是在目标机器上使用的?(这绝对是JRE 1.7)我知道一个事实,抛出异常的代码实际上包含在一个单独的JAR中,该JAR作为Maven依赖项拉进来:

我是否需要根据Java 1.7跟踪并重新构建这个外部JAR,这就是问题所在吗?还是有一个Maven“父项目”的概念将我的新JRE 1.7回归到1.6?抱歉,如果这些问题太天真了。

我最初认为这就像在运行时机器上更新JRE一样简单,但显然不是。那么我如何解决这个错误呢?

共有3个答案

邹正阳
2023-03-14

Maven忽略了您在eclipse中使用的JRE,您必须使用Maven compile插件配置强制它。下面是如何在这个链接中http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html但使用版本1.7而不是1.3

冷俊健
2023-03-14

与maven的关系中最重要的一点是要记住,真相的来源是maven中的pom文件,而不是IDE。因此,更改编译器版本必须在pom中完成。xml文件,而不在IDE中。

杨安歌
2023-03-14

假设问题确实是由使用旧版本的Java引起的,那么重建不会有任何影响。真正的问题是,您的应用程序JAR运行在较旧的JRE上。

在用于运行应用程序的命令shell中,运行java-version。这将告诉您在运行java-jar应用程序时将使用什么JDK/JRE。jar

 类似资料:
  • 我是Maven开发的初学者,需要我们的帮助来解决这个问题。我可以看到, 只有下面的罐子可用 我也得到下面的错误在 生成过程中发生错误。在项目“cim”上运行生成器“Maven Project builder”时出错。无法计算生成计划:插件组织。阿帕奇。专家plugins:maven resources plugin:2.6或其依赖项之一无法解析:无法读取组织的工件描述符。阿帕奇。专家插件:mave

  • 我在我的Eclipse中有一个简单的gradle项目。我更新了build.gradle以包含一些apache http JAR... 但是,在我的代码中,我引用了一些Apache HTTP内容: 我试着做一次清洁,但那不起作用。我的gradle插件是:

  • 我是Intellij用户,现在我需要使用Eclipse来创建一个Maven Web应用程序。所以我安装了Eclipse,我添加了Tomcat和所有内容。而且我想在我的项目中使用Java8,但我有一个问题,因为我试图将JRE System Library从1.7更改为1.8,当我做Maven时- 所以我创建了一个Maven项目,我从org.apache.maven中选择webapp原型,一开始我的项

  • 问题内容: 是否有任何预先存在的Maven插件或命令来更新POM中的依赖关系?示例:(如果这是在我的POM中) 有没有可以运行的命令或插件来将依赖关系更新为: 问题答案: 尝试使用maven-versions-plugin,尤其是versions:use-latest-versions目标。

  • 问题内容: 我正在运行一个依赖groovy 1.7-beta-1的项目。gmaven插件使用groovy 1.6版作为依赖项。在pom中,我在依赖性管理部分中将grooyv-all版本指定为: 但是,当我在调试模式下运行maven时,我看到groovy 1.6被用于对gmaven插件的依赖。我以为我的依赖项管理部分会重写此设置,因此它们都使用1.7-beta-1,但是由于常规版本不同,我遇到了错误

  • 我正在尝试更新IntelliJ中的依赖项。不幸的是,IntelliJ总是使用旧版本加载依赖项。 开始时我很疑惑,因为当我用Maven启动应用程序时,它运行得很好。但是当我想用IntelliJ启动它时,我得到以下错误: IntelliJ Idea mapstruct java:映射处理器内部错误:java.lang.NullPointerException 在我尝试过的所有解决方案之后,Maven总