【问题标题】:JavaFX maven plugin and API incompatibilityJavaFX maven 插件和 API 不兼容
【发布时间】:2013-12-11 02:02:53
【问题描述】:

最近我在我的 Fedora 19 上将我的 Java 版本升级到了 7u40。在那之后,我在当前的 JavaFX 项目运行期间开始遇到一个恼人的错误:

[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.929s
[INFO] Finished at: Wed Oct 16 17:36:05 CEST 2013
[INFO] Final Memory: 11M/155M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal com.zenjava:javafx-maven-plugin:2.0:run (default-cli) on project browser: Execution default-cli of goal com.zenjava:javafx-maven-plugin:2.0:run failed: An API incompatibility was encountered while executing com.zenjava:javafx-maven-plugin:2.0:run: java.lang.NoSuchMethodError: org.apache.maven.execution.MavenSession.getRepositorySession()Lorg/sonatype/aether/RepositorySystemSession;
[ERROR] -----------------------------------------------------
[ERROR] realm =    plugin>com.zenjava:javafx-maven-plugin:2.0
[ERROR] strategy = org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy
[ERROR] urls[0] = file:/home/sk_/.m2/repository/com/zenjava/javafx-maven-plugin/2.0/javafx-maven-plugin-2.0.jar
[ERROR] urls[1] = file:/home/sk_/.m2/repository/org/twdata/maven/mojo-executor/2.0/mojo-executor-2.0.jar
[ERROR] urls[2] = file:/home/sk_/.m2/repository/org/sonatype/aether/aether-util/1.7/aether-util-1.7.jar
[ERROR] urls[3] = file:/home/sk_/.m2/repository/org/codehaus/plexus/plexus-interpolation/1.14/plexus-interpolation-1.14.jar
[ERROR] urls[4] = file:/home/sk_/.m2/repository/org/codehaus/plexus/plexus-component-annotations/1.5.5/plexus-component-annotations-1.5.5.jar
[ERROR] urls[5] = file:/home/sk_/.m2/repository/org/sonatype/plexus/plexus-sec-dispatcher/1.3/plexus-sec-dispatcher-1.3.jar
[ERROR] urls[6] = file:/home/sk_/.m2/repository/org/sonatype/plexus/plexus-cipher/1.4/plexus-cipher-1.4.jar
[ERROR] urls[7] = file:/home/sk_/.m2/repository/org/codehaus/plexus/plexus-utils/1.5.1/plexus-utils-1.5.1.jar
[ERROR] urls[8] = file:/home/sk_/.m2/repository/org/sonatype/sisu/sisu-inject-bean/1.4.2/sisu-inject-bean-1.4.2.jar
[ERROR] urls[9] = file:/home/sk_/.m2/repository/org/sonatype/sisu/sisu-guice/2.1.7/sisu-guice-2.1.7-noaop.jar
[ERROR] urls[10] = file:/home/sk_/.m2/repository/org/codehaus/plexus/plexus-archiver/2.1.1/plexus-archiver-2.1.1.jar
[ERROR] urls[11] = file:/home/sk_/.m2/repository/junit/junit/3.8.1/junit-3.8.1.jar
[ERROR] urls[12] = file:/home/sk_/.m2/repository/org/codehaus/plexus/plexus-io/2.0.3/plexus-io-2.0.3.jar
[ERROR] urls[13] = file:/usr/java/jdk1.7.0_45/jre/../lib/ant-javafx.jar
[ERROR] Number of foreign imports: 1
[ERROR] import: Entry[import  from realm ClassRealm[maven.api, parent: null]]
[ERROR] 
[ERROR] -----------------------------------------------------
[ERROR] -> [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/PluginContainerException

有人遇到过这种情况吗?

【问题讨论】:

    标签: java maven javafx maven-plugin


    【解决方案1】:

    通过 Maven 降级到 3.0.5 解决

    【讨论】:

      【解决方案2】:

      通过如下配置我的 javafx-maven-plugin(将 mojo-executor 版本指定为 2.1.0),我能够在 maven 3.1.1 中解决这个问题...

      <build>
          <plugins>
              <plugin>
                  <groupId>com.zenjava</groupId>
                  <artifactId>javafx-maven-plugin</artifactId>
                  <version>2.0</version>
                  <configuration>
                      <mainClass>net.jalbright.scratch.App</mainClass>
                  </configuration>
                  <dependencies>
                      <dependency>
                          <groupId>org.twdata.maven</groupId>
                          <artifactId>mojo-executor</artifactId>
                          <version>2.1.0</version>
                      </dependency>
                  </dependencies>
              </plugin>
          </plugins>
      </build>
      

      javafx-maven-plugin 将在下一个版本中更新为使​​用 mojo-executor 到 2.1.0(请参阅:https://github.com/zonski/javafx-maven-plugin/issues/32),因此一旦 javafx-maven-plugin 得到修订,就可以将其删除。

      【讨论】:

      • 我正在使用 maven 3.2.5 并指定 mojo-executor 版本 解决了我的问题。
      • 自 8.4.0 版(从今天起发布)以来的 javafx-maven-plugin 不再需要 mojo-executor ;) 所以它应该可以在没有像这些变通方法的情况下工作。 免责声明:我是该插件的维护者
      猜你喜欢
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 2014-05-08
      • 1970-01-01
      • 2018-04-03
      • 2023-03-12
      相关资源
      最近更新 更多