Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 是否可以针对不同的版本重新编译jar?_Java_Maven_Jar - Fatal编程技术网

Java 是否可以针对不同的版本重新编译jar?

Java 是否可以针对不同的版本重新编译jar?,java,maven,jar,Java,Maven,Jar,我想在我的Android应用程序中使用一个jar,它是用Maven编译的。 问题是jar是针对1.8Java编译的,而Android需要1.7或更低版本 我有jar文件和源文件。下面可以看到库的源文件目录: C:. | pom.xml | sonar-project.properties | +---.sonar | \---.sonartmp | \---caches +---src | +---main | | +---java | | |

我想在我的Android应用程序中使用一个jar,它是用Maven编译的。 问题是jar是针对1.8Java编译的,而Android需要1.7或更低版本

我有jar文件和源文件。下面可以看到库的源文件目录:

C:.
|   pom.xml
|   sonar-project.properties
|   
+---.sonar
|   \---.sonartmp
|       \---caches
+---src
|   +---main
|   |   +---java
|   |   |   \---(folder with source java files)
|   |   |                       
|   |   \---resources
|   |           logback.xml
|   |           
|   \---test
|       \---(folder with java files)
|                               
\---target
    |   OLDJAR.jar
    |   
    +---classes
    |   |   .netbeans_automatic_build
    |   |   logback.xml
    |   |   
    |   \---(folder with class files)
    |                       
    +---generated-sources
    |   +---annotations
    |   \---test-annotations
    +---javadoc-bundle-options
    |       javadoc-options-javadoc-resources.xml
    |       package-list
    |       
    +---maven-archiver
    |       pom.properties
    |       
    +---site
    |   \---(folder with Htmls)
    |                               
    \---test-classes
        |   .netbeans_automatic_build
        |   
        \---(class files)
因为我是马文的新手,所以我非常感谢大家的帮助。我如何制作一个新的jar,以1.7版本为目标

我已将pom.xml文件修改为目标1.7:

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

谢谢。

如果测试失败,你应该看看原因。在源代码中,可以使用Java8中使用的特性,而Java7中没有这些特性,比如lambda表达式、流、新的DateTime api等


您始终可以尝试编译源代码,而不运行此处所述的测试,但我不建议这样做。

如果测试失败,您应该查看原因。在源代码中,可以使用Java8中使用的特性,而Java7中没有这些特性,比如lambda表达式、流、新的DateTime api等


您可以尝试编译源代码而不运行此处所述的测试,但我不建议您这样做。

您不应该忽略测试失败。但是,如果您想检查除了测试失败之外是否还有其他问题,可以通过向maven提供-Dmaven.test.skip=true来暂时禁止测试。

您不应该忽略测试失败。但是,如果您想检查除了测试失败之外是否还有其他问题,可以通过向maven提供-Dmaven.test.skip=true来暂时禁止测试。

我建议您向pom中添加两个配置文件:一个用于在1.7中编译,另一个用于1.8。例如:

<project>
    ...
    <build>
    ...
    </build>
    <profiles>
        <profile>
            <id>jdk1.7</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>2.3.2</version>
                        <configuration>
                            <source>1.7</source>
                            <target>1.7</target>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>jdk1.8</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>2.3.2</version>
                        <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
在开发环境(如Eclipse)中,通常有一个文本字段来指定选定的概要文件

见官员


当然,我鼓励您不要忽略测试结果。

我建议您在pom中添加两个配置文件:一个用于在1.7中编译,另一个用于1.8中编译。例如:

<project>
    ...
    <build>
    ...
    </build>
    <profiles>
        <profile>
            <id>jdk1.7</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>2.3.2</version>
                        <configuration>
                            <source>1.7</source>
                            <target>1.7</target>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
        <profile>
            <id>jdk1.8</id>
            <build>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-compiler-plugin</artifactId>
                        <version>2.3.2</version>
                        <configuration>
                            <source>1.8</source>
                            <target>1.8</target>
                        </configuration>
                    </plugin>
                </plugins>
            </build>
        </profile>
    </profiles>
</project>
在开发环境(如Eclipse)中,通常有一个文本字段来指定选定的概要文件

见官员



当然,我鼓励您不要忽视测试结果。

您的方法似乎很好。我得到一些测试失败不是很具体,可以更精确吗?如果您不担心测试失败,您可以运行
mvn clean install-DskipTests
。你在1.8下有没有同样的测试失败?降级语言版本显然会导致problems@vikingsteve我没有想到这一点。可能是版本的更改导致了测试失败吗?我下载了jar的1.8编译版本,所以我想没有测试失败……是的,非常肯定。尝试将其临时恢复到1.8,使用测试进行构建,并让我们知道它是否构建为绿色。通过这种方式,您可以将故障隔离到语言级别。Zavael的回答非常详细。@vikingsteve即使有1.8我也会出错:[INFO]生成失败[ERROR]无法执行目标org.apache.maven。插件:maven surefire插件:2.12:项目测试(默认测试):存在测试失败。[错误]请参考surefire报告了解单个测试结果。你的方法似乎很好。我得到一些测试失败不是很具体,可以更精确吗?如果您不担心测试失败,您可以运行
mvn clean install-DskipTests
。你在1.8下有没有同样的测试失败?降级语言版本显然会导致problems@vikingsteve我没有想到这一点。可能是版本的更改导致了测试失败吗?我下载了jar的1.8编译版本,所以我想没有测试失败……是的,非常肯定。尝试将其临时恢复到1.8,使用测试进行构建,并让我们知道它是否构建为绿色。通过这种方式,您可以将故障隔离到语言级别。Zavael的回答非常详细。@vikingsteve即使有1.8我也会出错:[INFO]生成失败[ERROR]无法执行目标org.apache.maven。插件:maven surefire插件:2.12:项目测试(默认测试):存在测试失败。[错误]请参考surefire报告了解单个测试结果。你是对的:测试是为了测试软件的质量,它们应该得到尊重。但不要担心使用编译器/JRE版本中没有的语言功能:即使关闭测试,它们也会在编译时失败。是的,我几乎可以肯定,如果在测试中使用了新功能,它们也会在应用程序源代码中使用,因此,我不建议跳过测试。我尝试跳过测试,以查看jar是否已创建,但事实并非如此。oldjar构建时是否可能没有测试失败,但现在有了?@TinaLooke最有可能的是java 8的新功能(i.ei 1.8源代码)是测试失败和编译失败的主要原因。您应该检查失败的地方,以便进一步确定问题。@Zavael我试图用java 8编译,但仍然出现错误。这可能吗?也许我错过了什么?隐藏的依赖关系等等?你是对的:测试是为了测试软件的质量,它们应该得到尊重。但不要担心使用编译器/JRE版本中没有的语言功能:即使关闭测试,它们也会在编译时失败。是的,我几乎可以肯定,如果在测试中使用了新功能,它们也会在应用程序源代码中使用,因此,我不建议跳过测试。我尝试跳过测试,以查看jar是否已创建,但事实并非如此。oldjar构建时是否可能没有测试失败,但现在有了?@TinaLooke最有可能的是java 8的新功能(i.ei 1.8源代码)是测试失败和编译失败的主要原因。你应该检查失败的地方,以便继续找出问题所在。@Zavael I
mvn -P jdk1.8 clean install