2013-08-06 25 views
7

मैंने एक साधारण हैलो वर्ल्ड स्विंग एप्लिकेशन बनाया जो ग्रहण में बस ठीक है और चलाता है। अब मैं इस एप्लिकेशन को मैवेन पैकेज संरचना में स्थानांतरित करने की कोशिश कर रहा हूं और इसे जावा वेब-स्टार्ट एप्लिकेशन के रूप में चला रहा हूं, जिससे मुझे बहुत दर्द हो रहा है। "एमवीएन क्लीन इंस्टॉल" चलाने के बाद, जावा कई सेकंड के लिए लोड होने लगते हैं और फिर छोड़ देते हैं।जेएनएलपी, वेबस्टार्ट, और मेवेन

संदर्भ के लिए यहां कुछ चीज़ें दी गई हैं। मेरे (बहुत सरल) परियोजना पूरी तरह से प्रतिलिपि प्रस्तुत करने योग्य होना चाहिए: (पेड़ से)

पैकेज संरचना:

├── 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 ग्राहक 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> 

स्विंगवेबस्टार्टमेन-वेब 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> 

धन्यवाद।

पीएस: मैं जिस परियोजना का उपयोग कर रहा हूं वह शॉन अब्राम की वेबसाइट पर एक उदाहरण है, यहां: http://www.shaunabram.com/swing-webstart-maven-example/। इसे टोमकैट के साथ इंटरफ़ेस करने और सर्वर पर चलाने के लिए डिज़ाइन किया गया था, लेकिन मुझे लगता है कि मुझे इसे स्थानीय रूप से काम करने में सक्षम होना चाहिए। मैं बस स्विंगवेबस्टार्टमेन-क्लाइंट शाखा का उपयोग कर रहा हूं और स्विंगवेबस्टार्टमेन-वेब शाखा को अनदेखा कर रहा हूं।

पीपीएस: मुझे लगता है कि मुझे पैकेज संरचना का नाम बदलने में सक्षम होना चाहिए, लेकिन किसी कारण से मैं नहीं कर सकता।

[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] 

संपादित करें: जब भी मैं निर्देशिका संरचना में मेरा आखिरी नाम के साथ shaunabram की जगह की कोशिश, मेरे जावा फ़ाइल में पैकेज की घोषणा, और pom.xml फ़ाइल में, इसके साथ शिकायत समस्या यह एक के समान है : उबंटू मशीन को छोड़कर I am not able launch JNLP applications using "Java Web Start"?। मुझे यह समझने में कठिनाई हो रही है कि लेखक का समाधान उबंटू पर कैसे अनुवाद करेगा (मैंने अपने जैन बिन में जवाव्स_एचओएमई सेट करने और जावा को दोबारा शुरू करने की कोशिश की लेकिन मुझे एक ही समस्या मिली (यानी जावा 6 स्प्लैश स्क्रीन शुरू होती है और फिर किसी भी प्रोग्राम के साथ बंद नहीं होती है मिल गया))। डबल क्लिक launch.jnlp जावा 7 (मैं क्या नहीं करना चाहता) में यह चलता है और

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

बाहर थूक उस बिंदु के बाद, मैं कुछ अन्य बातें करने की कोशिश की। प्राथमिक pom.xml में टॉमकैट प्लगइन था, जिसे मैं उपयोग नहीं कर रहा था, इसलिए मैंने इसे हटाने की कोशिश की, जिसने कुछ भी नहीं किया। मैंने फिर वास्तव में एक टोमकैट सर्वर बनाने और प्रोजेक्ट फ़ोल्डर को/var/lib/tomcat7/webapps/में डालने की कोशिश की। इसने त्रुटि में कोई बदलाव नहीं किया।

+0

"विफलता"? क्या आपने वर्ग के पैकेज नाम में शुनब्राम को भी बदल दिया था? – chrylis

+1

मैंने किया, हाँ। इसका उल्लेख करने के लिए मेरा बुरा; ओपी अपडेट किया गया। – rkoth

+2

यदि आप मुझे कम करते हैं, तो क्या आप समझा सकते हैं क्यों? क्या यह मुफ्त कोड स्निपेट या तथ्य यह है कि यह वास्तव में कोई सवाल नहीं है? प्रश्न बनाने के लिए एक बेहतर तरीका क्या होगा? – rkoth

उत्तर

3

वेब प्रारंभ वास्तव में क्या करता है पर पढ़ें; यह एक वर्णनकर्ता पढ़ने के लिए एक तंत्र है (उदाहरण के लिए, भरे हुए template.vm) और इसे नियमित जावा एप्लिकेशन डाउनलोड करना और लॉन्च करना (एक एप्लेट के विपरीत)। यदि आप कमांड लाइन से चल रहे हैं और पहले से ही जार है, तो यह अनावश्यक है। यदि आप वास्तव में इसके साथ खेलना चाहते हैं, तो आपको template.vm को a valid JNLP descriptor file में संपादित करना होगा जो स्थानीय कोडेबेस पर इंगित करता है और फिर javaws heet.jnlp का उपयोग करता है। javaws और इसमें शामिल लिंक के लिए मैन पेज देखें।

आपकी मेवेन समस्या के लिए, ऐसा प्रतीत होता है कि आपके पास संदर्भित मूल पीओएम स्थापित नहीं है, और इसलिए मैवेन को यह नहीं पता कि से क्या प्राप्त करना है। आपको पैरेंट पीओएम पर एक ही बदलाव करने की आवश्यकता होगी, इंस्टॉल करें, और उसके बाद बच्चे पीओएम पर काम करें।

+0

हाँ, मुझे एहसास हुआ कि आधे घंटे पहले पीओएम फाइल में क्या गलत था। मेजर डर्प पल जावा के लिए ... सभी पुराने मूल फाइलों को जोड़ने और javaws launch.jnlp चलाने के बाद, मैं जावा 6 स्प्लैश एनीमेशन को मारने की पुरानी समस्या में भाग लेता हूं, जो बाहर निकलने से लगभग 18 सेकंड तक चलता है। मैं ओपी को सुबह में अधिक प्रासंगिक जानकारी के साथ अद्यतन करूंगा। – rkoth

संबंधित मुद्दे