Stworzyłem prostą aplikację Hello World Swing, która kompiluje i działa dobrze w Eclipse. Teraz próbuję przenieść tę aplikację do struktury pakietu Maven i uruchomić ją jako aplikację Java Web-Start, co powoduje ogromny ból. Po uruchomieniu "mvn clean install", javaws wydaje się ładować przez kilka sekund, a następnie zakończyć.JNLP, Webstart i Maven
Oto kilka informacji. Moja (bardzo proste) projekt powinien być w pełni powtarzalne:
struktura pakietu (z drzewa):
├── 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
Podstawowa 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>
pom.xml SwingWebstart-Client
<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>
Dzięki.
PS: Projekt, którego używam, pochodzi z przykładu na stronie Shaun Abrama, tutaj: http://www.shaunabram.com/swing-webstart-maven-example/. Został zaprojektowany do współpracy z tomcat i uruchamiany na serwerze, ale mam wrażenie, że powinienem móc go uruchomić na miejscu. Używam tylko gałęzi SwingWebstartMaven-Client i ignoruję gałąź SwingWebstartMaven-Web.
PPS: Czuję, że powinienem móc zmienić nazwę struktury paczki, ale z jakiegoś powodu nie mogę. Ilekroć próbuję zastępując shaunabram z moim nazwiskiem w strukturze katalogów, deklaracja pakiet w moim pliku java, aw pliku pom.xml, narzeka z:
[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]
EDIT: Problem jest identyczny do tego : I am not able launch JNLP applications using "Java Web Start"? z wyjątkiem komputera z systemem Ubuntu. Mam trudności ze zrozumieniem, w jaki sposób rozwiązanie autora przełożyłoby się na Ubuntu (próbowałem ustawić JAVAWS_HOME na moim bin bin i ponownie uruchamiając javaws, ale to dało mi ten sam problem (tj. Ekran powitalny Java 6 uruchamia się, a następnie zatrzymuje bez żadnego programu uznany)). Dwukrotne kliknięcie launch.jnlp uruchamia go w Java 7 (nie to, co chcę) i wypluwa
"Error: Unable to load resource: http://localhost:8080/SwingWebstartMaven-Web/webstart/launch.jnlp."
Po tym punkcie, próbowałem kilka innych rzeczy. Pierwotny plik pom.xml zawierał wtyczkę tomcat, której nie używałem, więc spróbowałem ją usunąć, która nic nie zrobiła. Następnie spróbowałem stworzyć serwer tomcat i umieścić folder projektu w/var/lib/tomcat7/webapps /. To również nie spowodowało zmiany błędu.
"Fails"? Czy zastąpiłeś również shaunabram w nazwie pakietu klasy? – chrylis
Zrobiłem, tak. Moja zła za to, że o tym nie wspomniałem; OP został zaktualizowany. – rkoth
Jeśli zgodziłeś się ze mną, czy możesz wyjaśnić, dlaczego? Czy jest to nieuzasadnione fragmenty kodu lub fakt, że jest to naprawdę nieobligacyjna kwestia? Jaki byłby lepszy sposób sformułowania pytania? – rkoth