【问题标题】:Maven webstart plugin not finding dependenciesMaven webstart插件找不到依赖项
【发布时间】:2009-11-13 11:39:54
【问题描述】:

希望有人能帮我解决这个奇怪的问题。我正在尝试运行 webstart 插件,但它似乎无法在正在生成的 jar 中找到主类。 pom 尽可能简单,Test 类存在,正在编译并放入 jar 中。有人可以指出我正确的方向吗?

<project>
  <modelVersion>4.0.0</modelVersion>
  <name>Desktop Components</name>
  <groupId>com.test</groupId>
  <artifactId>test</artifactId>
  <version>1.0</version>
  <packaging>jar</packaging>
  <build>
    <plugins>
      <plugin>
        <groupId>org.codehaus.mojo.webstart</groupId>
        <artifactId>webstart-maven-plugin</artifactId>
        <executions>
          <execution>
            <phase>process-resources</phase>
            <goals>
              <goal>jnlp-download-servlet</goal>
            </goals>
          </execution>
        </executions>

        <configuration>
          <jnlpFiles>
            <jnlpFile>
              <jarResources>
                <jarResource>
                  <groupId>com.test</groupId>
                  <artifactId>test</artifactId>
                  <version>1.0</version>
                  <mainClass>Test</mainClass>
                </jarResource>
              </jarResources>
            </jnlpFile>
          </jnlpFiles>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>

这是 Maven 跟踪:

C:\TEMP\webstart-test>mvn webstart:jnlp –e
+ Error stacktraces are turned on.
[INFO] Scanning for projects...
[INFO] ------------------------------------------------------------------------
[INFO] Building Desktop Components
[INFO]    task-segment: [webstart:jnlp] (aggregator-style)
[INFO] ------------------------------------------------------------------------
[INFO] Preparing webstart:jnlp
[INFO] ------------------------------------------------------------------------
[INFO] Building Desktop Components
[INFO] ------------------------------------------------------------------------
[INFO] [resources:resources {execution: default-resources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\TEMP\webstart-test\src\main\resources
[INFO] [webstart:jnlp-download-servlet {execution: default}]
[INFO] No templateFilename found for launch2.jnlp. Will use the default template.
[INFO] No resources found in C:\TEMP\webstart-test\src\main\jnlp\resources
Downloading: http://repo1.maven.org/maven2/com/test/test/1.0/test-1.0.pom
[INFO] Unable to find resource 'com.test:test:pom:1.0' in repository central (http://repo1.maven.org/maven2)
No template specified Using default one.

***** Webstart JAR URL: jar:file:/C:/apache-maven-2.2.1/repo/org/codehaus/mojo/webstart/webstart-maven-plugin/1.0-alpha-2/webstart-maven-plugin-1.0-alpha-2.jar!
/
[INFO] [compiler:compile {execution: default-compile}]
[INFO] Nothing to compile - all classes are up to date
[INFO] [resources:testResources {execution: default-testResources}]
[WARNING] Using platform encoding (Cp1252 actually) to copy filtered resources, i.e. build is platform dependent!
[INFO] skip non existing resourceDirectory C:\TEMP\webstart-test\src\test\resources
[INFO] [compiler:testCompile {execution: default-testCompile}]
[INFO] No sources to compile
[INFO] [surefire:test {execution: default-test}]
[INFO] No tests to run.
[INFO] [jar:jar {execution: default-jar}]
[INFO] Building jar: C:\TEMP\webstart-test\target\test-1.0.jar
[INFO] [webstart:jnlp {execution: default-cli}]
[INFO] No resources found in C:\TEMP\webstart-test\src\main\jnlp\resources
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD ERROR
[INFO] ------------------------------------------------------------------------
[INFO] Failure to run the plugin:
[INFO] ------------------------------------------------------------------------
[INFO] Trace

跟踪跟随

org.apache.maven.lifecycle.LifecycleExecutionException: Failure to run the plugin:
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:284)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
        at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:592)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)

现在是由trace引起的

Caused by: org.apache.maven.plugin.MojoExecutionException: Failure to run the plugin:
        at org.codehaus.mojo.webstart.AbstractJnlpMojo.execute(AbstractJnlpMojo.java:289)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
        ... 17 more

Caused by: java.lang.NullPointerException
        at org.codehaus.mojo.webstart.AbstractJnlpMojo.execute(AbstractJnlpMojo.java:214)
        ... 19 more

最后的 Maven 跟踪

[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9 seconds
[INFO] Finished at: Fri Nov 13 11:16:54 GMT 2009
[INFO] Final Memory: 12M/22M
[INFO] ------------------------------------------------------------------------

【问题讨论】:

  • 请花一些时间来格式化您目前无法阅读的问题并解释您想要实现的目标。 webstart 插件有很多目标,因此即使我可以看到您正在调用哪个目标,“我正在尝试运行 webstart pluign”也不清楚。问题是您正在混合概念,所以我不知道您要做什么。正如我所说,花一些时间来澄清并以聪明的方式提出您的问题 (catb.org/~esr/faqs/smart-questions.html)。

标签: maven-2 java-web-start maven-webstart-plugin


【解决方案1】:

这是 JNLP 的 mainClass 的问题

你需要这样的东西

<configuration>
   <jnlp>
      <mainClass>com.test.Test</mainClass>
   </jnlp>
<configuration>

【讨论】:

    【解决方案2】:

    我相信这对您来说不再是问题,因为这个问题已经存在一年了。但是,为了完整起见...

    我已编辑问题以使其易于阅读。这向我们展示了错误在 AbstractJnlpMojo 的第 214 行。 Looking at the latest version source code 在第 214 行(上面的根本原因),我们可以看到这是因为您没有为 JNLP 文件指定 main 方法。

    JNLP 不需要jar 资源中刚刚指定的main 方法类。在 JNLP 标记中也需要它,像这样。

        <configuration>
          <jnlp>
            <mainClass>com.test.Test</mainClass>
          </jnlp>
        </configuration>
    

    由于代码已更改,如果您今天执行此操作,您将收到以下异常(更具可读性):

    org.apache.maven.plugin.MojoExecutionException: 
      didn't find artifact with main class: null. Did you specify it? 
    

    【讨论】:

      【解决方案3】:

      为了解决这个问题:

      没有找到具有主类的工件:null。你指定了吗?

      我必须按如下方式创建一个多模块 maven 项目:

      • 基础项目
        • 主应用
        • 网络启动

      然后在 webstart 的 pom 文件中,我将 main-app 作为依赖项包含在内。最后,在webstart 目录中运行mvn webstart:jnlp

      【讨论】:

        【解决方案4】:

        我认为不是你的依赖项没有找到,而是 C:\TEMP\webstart-test\src\main\jnlp\resources 中的一些文件,比如你的 jnlp 文件的 Velocity 模板可能吗?

        【讨论】:

        • @napoleon:使用默认的 Velocity 模板。
        猜你喜欢
        • 1970-01-01
        • 2017-10-28
        • 1970-01-01
        • 2016-10-01
        • 2020-04-18
        • 1970-01-01
        • 2018-02-21
        • 2011-01-24
        相关资源
        最近更新 更多