加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – Maven – 使用JDK 7编译JVM 5

发布时间:2020-12-15 00:20:06 所属栏目:Java 来源:网络整理
导读:我一直试图让这个工作一段时间,但没有运气. 我想用JAVA_HOME指向JDK7,但是我想为JVM 5编译一个项目.我已经阅读了documentation,我已经在SO上找到了similar posts,但是在我的设置中似乎没有任何一个工作. 我首先尝试设置目标和源,但我有一个错误: plugin gro
我一直试图让这个工作一段时间,但没有运气.

我想用JAVA_HOME指向JDK7,但是我想为JVM 5编译一个项目.我已经阅读了documentation,我已经在SO上找到了similar posts,但是在我的设置中似乎没有任何一个工作.

我首先尝试设置目标和源,但我有一个错误:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <source>1.5</source>
        <target>1.5</target>
    </configuration>
</plugin>

[ClassName] is not abstract and does not override abstract method getParentLogger() in CommonDataSource

据我所知,这个类在JDK 7中被更新,只是添加了抛出错误的额外的方法.我需要使用具有旧实现的JDK 5的运行时间,一切都应该正常工作.所以我这样做:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <verbose>true</verbose>
        <source>1.5</source>
        <target>1.5</target>
        <compilerArguments>
            <bootclasspath>${env.JAVA5_HOME}/jre/lib/rt.jar</bootclasspath>
        </compilerArguments>
    </configuration>
</plugin>

我的系统上正确设置了JAVA5_HOME,我可以看到它在日志中加载正确的类,但是我又碰到另一个错误:

[loading ZipFileIndexFileObject[c:Program FilesJavajdk1.5.0_22jrelibrt.jar(*.class)]]


[ClassName] error: package javax.crypto does not exist

这是很公平的,因为我没有在bootclasspath中包含jce.jar(加密类).有一件事让我难以置信.即使bootclasspath只包含Java 5运行时,我在类路径中有很多来自JRE7的库.它们没有在任何地方指定.

[search path for class files: c:Program Files
(x86)Javajdk1.5.0_22jrelibrt.jar,c:Program
FilesJavajdk1.7.0_02jrelibextdnsns.jar,c:Program
FilesJavajdk1.7.0_02jrelibextlocaledata.jar,c:Program
FilesJavajdk1.7.0_02jrelibextsunec.jar,c:Program
FilesJavajdk1.7.0_02jrelibextsunjce_provider.jar,c:Program
FilesJavajdk1.7.0_02jrelibextsunmscapi.jar,c:Program
FilesJavajdk1.7.0_02jrelibextzipfs.jar,…]

如果我尝试添加jce.jar(从JRE5),我回到第一个错误:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <verbose>true</verbose>
        <source>1.5</source>
        <target>1.5</target>
        <compilerArguments>
            <bootclasspath>${env.JAVA5_HOME}/jre/lib/rt.jar${path.separator}${env.JAVA5_HOME}/jre/lib/jce.jar</bootclasspath>
        </compilerArguments>
    </configuration>
</plugin>

The type [ClassName] must implement the inherited abstract method
CommonDataSource.getParentLogger()

我也看不到rt.jar被加载的痕迹,但是我没有找到java.lang没有找到错误,所以有一些类被加载到类路径上.

我将通过制作一个批量脚本来修复JAVA_HOME,然后再建立并重新设置它,但我真的希望这样做是正确的.这似乎不是一个极端的用例.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读