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

时间:2013-04-16 12:44:40

标签: eclipse maven java

我正在尝试在Eclipse中构建large Open Source project;它使用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)

did some research似乎这个错误意味着java.util.ZipFile无法读取文件,因为它是ZIP64格式。显然这已经在Java 1.7中得到了修复,所以我尽职尽责地在OS X上更新了JDK,并试图通过在Eclipse中右键单击它来改变Maven项目,然后改变Project Facet,这反过来似乎已经更新了该项目中的JRE库为1.7:

enter image description here

但是,这不起作用 - 即使重新构建整个项目,我仍然会收到错误。

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

enter image description here

我是否需要针对Java 1.7追踪并重新构建此外部JAR,这是问题所在吗?或者是否有一个Maven'父项目'的概念将我的新JRE 1.7回归到1.6?对不起,如果这些问题很天真。

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

3 个答案:

答案 0 :(得分:2)

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

在用于运行应用程序的命令shell中,运行java -version。这将告诉您在运行java -jar yourApp.jar ...

时将使用的JDK / JRE

答案 1 :(得分:0)

与maven关系中最重要的一点是要记住,事实的根源是Maven中的pom文件和IDE中的 NOT 。因此,必须在pom.xml文件中更改编译器版本,并在IDE中执行 NOT

答案 2 :(得分:0)

Maven忽略了你在eclipse中使用的JRE,你必须使用maven编译插件配置强制它。以下是此链接http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html的方法,但版本为1.7而不是1.3