【问题标题】:Detected JDK Version: 15.0.2 is not in the allowed range [1.8.0-101,1.8.9999]检测到的 JDK 版本:15.0.2 不在允许范围内 [1.8.0-101,1.8.9999]
【发布时间】:2021-06-27 00:58:24
【问题描述】:

我有以下问题已多次报告(link1link2link3link4link5 等)。但我找不到明确的答案。

我只是在这个项目的模板example-imagej-command中编辑了项目名称和基本信息;

当我尝试在 Eclipse 中使用 Maven 构建时;

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/cosacak/.p2/pool/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/cosacak/eclipse/java-2020-12/eclipse/configuration/org.eclipse.osgi/5/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/C:/Users/cosacak/.p2/pool/plugins/org.eclipse.m2e.maven.runtime.slf4j.simple_1.16.0.20200610-1735/jars/slf4j-simple-1.7.5.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [file:/C:/Users/cosacak/eclipse/java-2020-12/eclipse/configuration/org.eclipse.osgi/5/0/.cp/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
[INFO] Scanning for projects...
[INFO] 
[INFO] ------------------< de.kizillab.org:MyExamplePlugin >-------------------
[INFO] Building My Example Plugin 1
[INFO] --------------------------------[ jar ]---------------------------------
[INFO] 
[INFO] --- maven-enforcer-plugin:1.4.1:enforce (enforce-rules) @ MyExamplePlugin ---
[INFO] Adding ignore: module-info
[INFO] Adding ignore: META-INF/versions/*/module-info
[INFO] Adding ignore: org.apache.hadoop.yarn.*.package-info
[INFO] Adding ignore: org.apache.spark.unused.UnusedStubClass
[INFO] Adding ignore: org.hibernate.stat.ConcurrentStatisticsImpl
[INFO] Adding ignore: org.junit.runner.Runner
[INFO] Adding ignore: module-info
[WARNING] Rule 2: org.apache.maven.plugins.enforcer.RequireJavaVersion failed with message:
Detected JDK Version: 15.0.2 is not in the allowed range [1.8.0-101,1.8.9999].
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  8.330 s
[INFO] Finished at: 2021-03-31T02:49:00+02:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:1.4.1:enforce (enforce-rules) on project MyExamplePlugin: Some Enforcer rules have failed. Look above for specific messages explaining why the rule failed. -> [Help 1]
[ERROR] 
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR] 
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

现在,如果我使用 eclipse 作为 Java 应用程序运行;

    log4j:WARN No appenders could be found for logger (org.bushe.swing.event.EventService).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
[ERROR] Cannot create plugin: class='org.scijava.plugins.scripting.javascript.JavaScriptScriptLanguage', name='JavaScript', priority=0.0, enabled=true, pluginType=ScriptLanguage
java.lang.IllegalArgumentException: No such script engine: javascript
    at org.scijava.script.AdaptedScriptLanguage.findFactory(AdaptedScriptLanguage.java:152)
    at org.scijava.script.AdaptedScriptLanguage.<init>(AdaptedScriptLanguage.java:74)
    at org.scijava.plugins.scripting.javascript.JavaScriptScriptLanguage.<init>(JavaScriptScriptLanguage.java:59)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
    at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:350)
    at java.base/java.lang.Class.newInstance(Class.java:645)
    at org.scijava.plugin.PluginInfo.createInstance(PluginInfo.java:306)
    at org.scijava.plugin.DefaultPluginService.createInstance(DefaultPluginService.java:237)
    at org.scijava.plugin.DefaultPluginService.createInstances(DefaultPluginService.java:226)
    at org.scijava.plugin.DefaultPluginService.createInstancesOfType(DefaultPluginService.java:217)
    at org.scijava.plugin.AbstractSingletonService.initInstances(AbstractSingletonService.java:138)
    at org.scijava.plugin.AbstractSingletonService.getInstances(AbstractSingletonService.java:77)
    at org.scijava.plugin.SingletonService.lambda$initialize$0(SingletonService.java:97)
    at org.scijava.object.ObjectIndex.resolvePending(ObjectIndex.java:388)
    at org.scijava.object.ObjectIndex.get(ObjectIndex.java:133)
    at org.scijava.object.DefaultObjectService.getObjects(DefaultObjectService.java:87)
    at org.scijava.display.DefaultDisplayService.getDisplays(DefaultDisplayService.java:166)
    at org.scijava.ui.DefaultUIService.showUI(DefaultUIService.java:159)
    at org.scijava.ui.DefaultUIService.showUI(DefaultUIService.java:142)
    at de.kizillab.org.MyExamplePlugin.main(MyExamplePlugin.java:85)
[ERROR]: Cannot locate JRE jar in C:\Users\cosacak\.p2\pool\plugins\org.eclipse.justj.openjdk.hotspot.jre.full.win32.x86_64_15.0.2.v20210201-0955\jre
[ERROR] Cannot create plugin: class='org.scijava.ui.swing.script.languagesupport.JavaLanguageSupportPlugin', priority=0.0, enabled=true, pluginType=LanguageSupportPlugin
java.lang.IllegalArgumentException: info cannot be null
    at org.fife.rsta.ac.java.JarManager.addClassFileSource(JarManager.java:157)
    at org.fife.rsta.ac.java.JarManager.addCurrentJreClassFileSource(JarManager.java:193)
    at org.scijava.ui.swing.script.languagesupport.JavaLanguageSupportPlugin.<init>(JavaLanguageSupportPlugin.java:56)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:64)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstanceWithCaller(Constructor.java:500)
    at java.base/java.lang.reflect.ReflectAccess.newInstance(ReflectAccess.java:128)
    at java.base/jdk.internal.reflect.ReflectionFactory.newInstance(ReflectionFactory.java:350)
    at java.base/java.lang.Class.newInstance(Class.java:645)
    at org.scijava.plugin.PluginInfo.createInstance(PluginInfo.java:306)
    at org.scijava.plugin.DefaultPluginService.createInstance(DefaultPluginService.java:237)
    at org.scijava.plugin.DefaultPluginService.createInstances(DefaultPluginService.java:226)
    at org.scijava.plugin.DefaultPluginService.createInstancesOfType(DefaultPluginService.java:217)
    at org.scijava.plugin.AbstractSingletonService.initInstances(AbstractSingletonService.java:138)
    at org.scijava.plugin.AbstractSingletonService.getInstances(AbstractSingletonService.java:77)
    at org.scijava.plugin.SingletonService.lambda$initialize$0(SingletonService.java:97)
    at org.scijava.object.ObjectIndex.resolvePending(ObjectIndex.java:388)
    at org.scijava.object.ObjectIndex.get(ObjectIndex.java:133)
    at org.scijava.object.DefaultObjectService.getObjects(DefaultObjectService.java:87)
    at org.scijava.display.DefaultDisplayService.getDisplays(DefaultDisplayService.java:166)
    at org.scijava.ui.DefaultUIService.showUI(DefaultUIService.java:159)
    at org.scijava.ui.DefaultUIService.showUI(DefaultUIService.java:142)
    at de.kizillab.org.MyExamplePlugin.main(MyExamplePlugin.java:85)
[INFO] Found 10 JHotDraw adapters.

【问题讨论】:

  • 构建脚本显然想要强制您使用 Java 8 构建,那么您是否尊重限制并安装 Java 8 并在构建时使用它呢? --- 至于No such script engine: javascript 错误,Java 15 中删除了 JavaScript 脚本引擎。如果你改用程序显然想要的 Java 8,你也会得到你的 JavaScript。
  • 这里是java版本,是不是必须降级到8,或者在eclipse安装中有没有办法:java version "16" 2021-03-16 Java(TM) SE Runtime Environment (build 16+36-2231) Java HotSpot(TM) 64-Bit Server VM (build 16+36-2231, mixed mode, sharing)
  • 我告诉你安装 Java 8。如果你在安装 Java 8 时需要帮助,然后创建一个新问题并询问它,但是当我已经告诉你安装时询问你是否需要降级到 8 8 只是... (抱歉,找不到要使用的词) --- 是的,有一种方法可以在 Eclipse 中使用 Java 8。但知道这一点有多大帮助?问 如何 用 Eclipse 做这件事不是更好吗?当然,您可以通过网络搜索来找到答案,但我们不要深入探讨。 --- 也许你应该考虑如何更好地ask a good question

标签: java eclipse maven build


【解决方案1】:

作为 eclipse 的替代方案,可以简单地在 linux 或任何安装了 Maven 的操作系统上使用 Maven。

这里的linux版本是:

>java -version

openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-8u282-b08-0ubuntu1~20.04-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)

而maven版本是:

>mvn -version

Apache Maven 3.6.3
Maven home: /usr/share/maven
Java version: 1.8.0_282, vendor: Private Build, runtime: /usr/lib/jvm/java-8-openjdk-amd64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "5.4.0-60-generic", arch: "amd64", family: "unix"

现在只是运行:

mvn compile
mvn package

解决问题。

如果我找到了 eclipse 或 netbeans 的解决方案,我也会发布答案。

【讨论】:

    【解决方案2】:

    对于window用户,如果你有Maven项目,Maven也是可用的,可以用来编译/打包,就像在Linux上一样(见我上面的回答)。因此,如果在eclipse中构建项目时遇到上述问题并且没有Linux,也可以在windows上使用Maven。

    现在我正在 eclipse 中编写我的脚本/项目并使用 Maven 命令编译/打包如下;

    here 下载 Maven zip 文件并将其解压缩到 Windows 上的任何位置,不必在您的项目文件夹中。在 PATH 中添加 maven \bin。 bin文件解压后有maven.cmd,例如apache-maven-3.6.3-bin\apache-maven-3.6.3\bin文件夹。

    现在在 Windows 中打开命令终端,使用 cd 导航到也有 pom.xml 文件的项目文件夹。就我而言;

    cd Documents\eclipse-workspace\example-imagej-command-master
    
    mvn compile
    mvn package
    

    它也适用于 Windows。

    【讨论】:

      【解决方案3】:

      最后,我可以在 windows 上使用 eclipse 解决问题。为了构建包,来自这个question 的解决方案适用于 Windows 上的 Eclipse:

      简而言之;

      去;

      windows -> preferences -> Installed JREs
      

      然后按Add -&gt; Start VMNext,选择JRE home by "Directory"为path2Fiji\Fiji\java\win64\jdk1.8.0_172

      最后选择 FiJi 中的 jdk 和“Apply and Close”。

      现在,eclipse 应该可以在 Windows 上构建 Maven 项目了。

      【讨论】:

        猜你喜欢
        • 2020-12-17
        • 2016-02-24
        • 2013-03-12
        • 2015-11-05
        • 2016-10-05
        • 1970-01-01
        • 1970-01-01
        • 2019-04-07
        • 2020-02-10
        相关资源
        最近更新 更多