gpt4 book ai didi

java - JNLP、Webstart 和 Maven

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:32:34 26 4
gpt4 key购买 nike

我创建了一个简单的 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);
}
}

模板.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 接口(interface)并在服务器上运行,但我觉得我应该能够让它在本地工作。我只是使用 SwingWebstartMaven-Client 分支并忽略 SwingWebstartMaven-Web 分支。

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

[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 应用程序(与小程序相对)的机制。如果您从命令行运行并且已经有了 jar,那么它是多余的。如果你真的想玩它,你需要编辑 template.vma valid JNLP descriptor file指向本地代码库,然后使用 javaws heet.jnlp。请参阅 javaws 的手册页及其包含的链接。

至于您的 Maven 问题,您似乎没有安装引用的父 POM,因此 Maven 不知道从中继承什么。您需要对父 POM 执行相同的更改、安装,然后处理子 POM。

关于java - JNLP、Webstart 和 Maven,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18071916/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com