Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/maven/6.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 有没有办法在依赖项中强制执行编译器目标版本?_Java_Maven_Java 8 - Fatal编程技术网

Java 有没有办法在依赖项中强制执行编译器目标版本?

Java 有没有办法在依赖项中强制执行编译器目标版本?,java,maven,java-8,Java,Maven,Java 8,在Maven中配置target可确保库代码将在以前的编译器版本中运行,但如果库的依赖项是未来版本,则不能防止在使用它运行库时失败 例如,假设我的JDK是Java8 For compiler,如果我的代码使用Optionals,它将通过目标1.7,但在运行时将失败,因为它是1.8中引入的类,作为java内部依赖项提供 是否有任何机制可以确保整个库符合1.7标准,从而在编译时启动选项?首先定义目标/源代码并不保证您的代码将使用其他JVM版本,而不是您用来编译的版本(这不太可能,但会发生)。唯一的解决

在Maven中配置target可确保库代码将在以前的编译器版本中运行,但如果库的依赖项是未来版本,则不能防止在使用它运行库时失败

例如,假设我的JDK是Java8 For compiler,如果我的代码使用Optionals,它将通过目标1.7,但在运行时将失败,因为它是1.8中引入的类,作为java内部依赖项提供


是否有任何机制可以确保整个库符合1.7标准,从而在编译时启动选项?

首先定义
目标/源代码
并不保证您的代码将使用其他JVM版本,而不是您用来编译的版本(这不太可能,但会发生)。唯一的解决方案是使用假设您安装了适当的JDK并使用正确的JDK进行编译的方法

此外,对于库的问题,您可以使用,它还将根据JDK签名文件检查库


...
...
...
org.codehaus.mojo
结合如下所示:


[...]
org.apache.maven.plugins
maven enforcer插件
1.4.1
强制执行字节码版本
执行
1.7
org.mindrot:jbcrypt
真的
org.codehaus.mojo
额外执行者规则
1.0-beta-4
[...]

不,没有。因为库是编译文件。理论上,如果可以检查字节码签名或其他东西,那么应该有一种可能性。不幸的是,依赖项没有java版本属性,请参阅。你也可以创建一个maven插件来进行类扫描(简单)。