Maven webstart plugin not finding dependencies
Asked Answered
L

4

7

Hoping someone can help me with this strange one. I’m trying to run the webstart plugin but it doesn’t seem to be able to find the main class within the jar being produce. The pom is as simple as it can get, and the class Test exists, and is being compiled and placed in the jar. Can someone please point me in the right direction?

<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>

Here is the Maven trace:

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

The trace follows

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)

Now the Caused by 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

And the final Maven trace

[INFO] ------------------------------------------------------------------------
[INFO] Total time: 9 seconds
[INFO] Finished at: Fri Nov 13 11:16:54 GMT 2009
[INFO] Final Memory: 12M/22M
[INFO] ------------------------------------------------------------------------
Legrand answered 13/11, 2009 at 11:39 Comment(1)
Please, take some time to format your question which is currently unreadable and to explain what you are trying to achieve. The webstart plugin has many goals so "I'm trying to run the webstart pluign" is not clear even if I can see which goal you are invoking. The problem is that you are mixing concepts so I don't know what you are trying to do. As I said, take some time to clarify and ask your question in a smart way (catb.org/~esr/faqs/smart-questions.html).Wilen
S
1

This is problem with mainClass for JNLP

You need something like this

<configuration>
   <jnlp>
      <mainClass>com.test.Test</mainClass>
   </jnlp>
<configuration>
Scatology answered 10/12, 2010 at 22:15 Comment(0)
A
0

I'm sure this is no longer a problem for you, as the question is a year old. However, for the sake of completeness...

I've edited the question to make it readable. This shows us the error is on line 214 of AbstractJnlpMojo. Looking at the latest version source code on line 214 (the root cause above), we can see this is because you have not specified the main method for the JNLP file.

The JNLP doesn't need the main method class just specified in the jar resources. It also needs it in the JNLP tag, like this.

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

As the code has changed, if you did this today, you would get the following Exception (a bit more readable):

org.apache.maven.plugin.MojoExecutionException: 
  didn't find artifact with main class: null. Did you specify it? 
Amhara answered 9/6, 2011 at 8:25 Comment(0)
P
0

For solving this issue:

didn't find artifact with main class: null. Did you specify it?

I had to create a multi-module maven project as follows:

  • base-project
    • main-app
    • webstart

Then inside webstart's pom file I included main-app as a dependency. Finally, run mvn webstart:jnlp from within webstart directory.

Potshot answered 26/6, 2017 at 6:23 Comment(0)
F
-1

I don't think its your dependencies that are not found, but rather some files in C:\TEMP\webstart-test\src\main\jnlp\resources, such as the Velocity template for your jnlp file maybe?

Fiducial answered 19/11, 2009 at 18:21 Comment(1)
@napoleon: the default Velocity template is used.Lucillalucille

© 2022 - 2024 — McMap. All rights reserved.