7

私は、Eclipse で問題なくコンパイルおよび実行される単純な Hello World Swing アプリケーションを作成しました。私は現在、このアプリケーションを 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 の Web サイト ( 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]

編集:問題はこれと同じです: 「Java Web Start」を使用してJNLPアプリケーションを起動できませんか? 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/に置いてみました。これもエラーに変化はありませんでした。

4

1 に答える 1