【问题标题】:Unable to target byte code to earlier versions无法将字节码定位到早期版本
【发布时间】:2021-08-03 23:08:51
【问题描述】:

jdk 11可以生成java 7字节码吗?正常情况下是可以的,但是在尝试之后

jar 文件生成但查看版本:

$ javap -v org/iq80/leveldb/DB.class | grep major
  major version: 52

似乎目标是 java 8 (What version of javac built my jar?) 而不是 7(android 构建需要)。

如何强制构建 7?

【问题讨论】:

标签: java intellij-idea


【解决方案1】:

我建议在您的 pom.xmlbuild.gradle 中设置它。

Maven 编译器插件(参见configuration 块):

     <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                <forceJavacCompilerUse>true</forceJavacCompilerUse>
                    <source>11</source>
                    <target>1.7</target>
                </configuration>
            </plugin>
        </plugins>
    </build>

Gradle(脚本中的任何顶级):

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_1_7
}

如果由于某种原因您使用这些来构建,我会认真考虑切换。有关 IntelliJ 解决方案,请参阅 CrazyCoder 的评论。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-29
    • 2017-11-04
    • 2020-12-13
    • 2015-12-12
    • 1970-01-01
    • 2012-01-01
    相关资源
    最近更新 更多