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. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |