java – JNLP,Webstart和Maven

我创建了一个简单的Hello World Swing应用程序,它可以在 Eclipse中编译和运行.我现在正在尝试将此应用程序转移到Maven包结构并将其作为Java Web-Start应用程序运行,这让我感到非常痛苦.运行“mvn clean install”后,javaws似乎加载了几秒钟然后退出.

以下是一些可供参考的内容.我(非常简单)的项目应该是完全可重现的:

包结构(来自树):

├── pom.xml
├── readme.txt
├── SwingWebstartMaven-Client
│ ├── pom.xml
│ ├── src
│ │ ├── main
│ │ │ ├── java
│ │ │ │ └── com
│ │ │ │     └── shaunabram
│ │ │ │         └── swingwebstartmaven
│ │ │ │             ├── HelloWorldSwing.class
│ │ │ │             └── HelloWorldSwing.java
│ │ │ ├── jnlp
│ │ │ │ └── template.vm
│ │ │ └── resources
│ │ └── test
│ └── target
│     ├── classes
│     │ └── com
│     │     └── shaunabram
│     │         └── swingwebstartmaven
│     │             └── HelloWorldSwing.class
│     ├── jnlp
│     │ ├── launch.jnlp
│     │ ├── lib
│     │ │ └── SwingWebstartMaven-Client-1.0.jar
│     │ └── SwingWebstartMavenExample-KeyStore
│     ├── maven-archiver
│     │ └── pom.properties
│     ├── surefire
│     ├── SwingWebstartMaven-Client-1.0.jar
│     └── SwingWebstartMaven-Client-1.0.zip
└── SwingWebstartMaven-Web
    ├── pom.xml
    ├── src
    │ ├── main
    │ │ ├── java
    │ │ ├── resources
    │ │ └── webapp
    │ │     ├── index.html
    │ │     └── WEB-INF
    │ │         └── web.xml
    │ └── test
    └── target
        ├── classes
        ├── maven-archiver
        │ └── pom.properties
        ├── surefire
        ├── SwingWebstartMaven-Web-1.0
        │ ├── index.html
        │ ├── META-INF
        │ └── WEB-INF
        │     ├── classes
        │     └── web.xml
        └── SwingWebstartMaven-Web-1.0.war

主要pom.xml:

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.shaunabram.swingwebstartmaven</groupId>
    <artifactId>SwingWebstartMaven</artifactId>
    <packaging>pom</packaging>
    <version>1.0</version>
    <name>SwingWebstartMaven Project</name>

    <modules>
        <module>SwingWebstartMaven-Client</module>
        <module>SwingWebstartMaven-Web</module>
    </modules>

    <build>
        <pluginManagement>
            <plugins>

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.5</source>
                        <target>1.5</target>
                    </configuration>
                </plugin>

                <plugin>
                    <groupId>org.codehaus.mojo</groupId>
                    <artifactId>tomcat-maven-plugin</artifactId>
                    <configuration>
                        <url>http://localhost:8080/manager</url>
                        <username>tomcat</username>
                        <password>tomcat</password>
                    </configuration>
                </plugin>

            </plugins>
        </pluginManagement>
    </build>

</project>

SwingWebstart-Client pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.shaunabram.swingwebstartmaven</groupId>
        <artifactId>SwingWebstartMaven</artifactId>
        <version>1.0</version>
    </parent>
    <artifactId>SwingWebstartMaven-Client</artifactId>
    <packaging>jar</packaging>
    <name>SwingWebstartMaven Client</name>

    <build>
        <plugins>
            <plugin>
                <groupId>org.codehaus.mojo.webstart</groupId>
                <artifactId>webstart-maven-plugin</artifactId>
                <version>1.0-beta-2</version>

                <executions>
                    <execution>
                        <id>package</id>
                        <phase>package</phase>
                        <goals>
                            <goal>jnlp-inline</goal>
                        </goals>
                    </execution>
                </executions>

                <configuration>
                    <jnlp>
                        <outputFile>launch.jnlp</outputFile>
                        <mainClass>com.shaunabram.swingwebstartmaven.HelloWorldSwing</mainClass>
                    </jnlp>

                    <libPath>lib</libPath>

                    <sign>
                        <keystore>SwingWebstartMavenExample-KeyStore</keystore>
                        <keypass>YourPassword</keypass>
                        <storepass>YourPassword</storepass>
                        <alias>SwingWebstartMavenExample</alias>
                        <validity>3650</validity>

                        <dnameCn>Your Name</dnameCn>
                        <dnameOu>Organizational Unit</dnameOu>
                        <dnameO>Organization</dnameO>
                        <dnameL>City or Locality</dnameL>
                        <dnameSt>State or Province</dnameSt>
                        <dnameC>US</dnameC>

                        <verify>true</verify>
                        <keystoreConfig>
                            <delete>true</delete>
                            <gen>true</gen>
                        </keystoreConfig>
                    </sign>

                    <pack200>false</pack200>
                    <gzip>true</gzip>
                    <outputJarVersions>false</outputJarVersions>
                    <verbose>true</verbose>

                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

SwingWebstartMaven-Web pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
                             http://maven.apache.org/maven-v4_0_0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>com.shaunabram.swingwebstartmaven</groupId>
        <artifactId>SwingWebstartMaven</artifactId>
        <version>1.0</version>
    </parent>

    <artifactId>SwingWebstartMaven-Web</artifactId>
    <packaging>war</packaging>
    <name>SwingWebstartMaven Web</name>

    <dependencies>

    </dependencies>

</project>

HelloWorldSwing.java:

package com.shaunabram.swingwebstartmaven;

import javax.swing.JFrame;
import javax.swing.JLabel;

public class HelloWorldSwing {
  public static void main(String[] args) {
    JFrame frame = new JFrame("HelloWorldSwing");
    final JLabel label = new JLabel("Hello World");
    frame.getContentPane().add(label);

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.pack();
    frame.setVisible(true);
  }
}

template.vm:

<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.0+" codebase="http://localhost:8080/SwingWebstartMaven-Web/webstart" href="$outputFile">
 <information>
    <title>Swing Webstart Maven Project</title>
    <vendor>ShaunAbram</vendor>
 </information>
 <security>
 <all-permissions/>
 </security>
 <resources>
    <j2se version="1.5+" initial-heap-size="32m" max-heap-size="128m" />
    <property name="jnlp.versionEnabled" value="false"/>
    $dependencies
 </resources>
 <application-desc main-class="$mainClass">
 </application-desc>
</jnlp>

谢谢.

PS:我正在使用的项目来自Shaun Abram的网站上的一个例子,这里是:http://www.shaunabram.com/swing-webstart-maven-example/.它被设计为与tomcat接口并在服务器上运行但我觉得我应该能够让它在本地工作.我只是使用SwingWebstartMaven-Client分支并忽略SwingWebstartMaven-Web分支.

PPS:我觉得我应该可以重命名包结构,但由于某种原因我不能.每当我尝试用目录结构中的姓氏替换shaunabram,我的java文件和pom.xml文件中的包声明时,它会抱怨:

[ERROR]   The project com.kothur.swingwebstartmaven:SwingWebstartMaven-Client:1.0 (/media/reivei/New Volume/Project Files/SwingWebstartMaven/SwingWebstartMaven-Client/pom.xml) has 1 error
[ERROR]     Non-resolvable parent POM: Failure to find com.kothur.swingwebstartmaven:SwingWebstartMaven:pom:1.0 in http://repo.maven.apache.org/maven2 was cached in the local repository,resolution will not be reattempted until the update interval of central has elapsed or updates are forced and 'parent.relativePath' points at wrong local POM @ line 6,column 13 -> [Help 2]

编辑:问题与这个问题相同:I am not able launch JNLP applications using “Java Web Start”?除了在Ubuntu机器上.我很难理解作者的解决方案将如何转换为Ubuntu(我尝试将JAVAWS_HOME设置为我的jre bin并重新运行javaws但它给了我同样的问题(即Java 6启动画面启动然后停止,没有程序是发现)).双击launch.jnlp在Java 7中运行它(不是我想要的)并吐出

"Error: Unable to load resource: http://localhost:8080/SwingWebstartMaven-Web/webstart/launch.jnlp."

在那之后,我尝试了其他一些事情.主要的pom.xml有tomcat插件,我没有使用它,所以我尝试删除它,它没有做任何事情.然后我尝试创建一个tomcat服务器并将项目文件夹放在/ var / lib / tomcat7 / webapps /中.这也不会改变错误.

解决方法

阅读Web Start的实际内容;它是一种读取描述符(例如,填充的template.vm)并从中下载并启动常规Java应用程序(与applet相对)的机制.如果你从命令行运行并且已经有了jar,那就多余了.如果你真的想玩它,你需要将template.vm编辑成指向本地代码库的 a valid JNLP descriptor file,然后使用javaws heet.jnlp.请参阅javaws的手册页及其包含的链接.

至于你的Maven问题,你似乎没有安装引用的父POM,因此Maven不知道从哪个继承.您需要在父POM上执行相同的更改,安装,然后处理子POM.

相关文章

python方向·数据分析   ·自然语言处理nlp   案例:中...
原文地址http://blog.sina.com.cn/s/blog_574a437f01019poo....
ptb数据集是语言模型学习中应用最广泛的数据集,常用该数据集...
 Newtonsoft.JsonNewtonsoft.Json是.Net平台操作Json的工具...
NLP(NaturalLanguageProcessing)自然语言处理是人工智能的一...
做一个中文文本分类任务,首先要做的是文本的预处理,对文本...