2013-01-10 46 views
8

के साथ जावाएफएक्स एप्लिकेशन लॉन्च करने में विफल मैंने एक जावाएफएक्स एप्लीकेशन बनाया है, और एंटी का उपयोग करके अपना मूल बंडल बनाया है। जब मैं जार का उपयोग करके बंडल से डबल क्लिक के साथ एप्लिकेशन लॉन्च करने का प्रयास कर रहा हूं, तो यह सफलतापूर्वक मेरा एप्लिकेशन लॉन्च कर रहा है। लेकिन जब मैं MyApplication.exe (कहता हूं) पर डबल क्लिक करने की कोशिश कर रहा हूं, तो यह फेंक रहा है JavaFX लॉन्चर त्रुटि "अनुप्रयोग चलाने के दौरान अपवाद"देशी बंडल exe

मैंने दोनों जेरे की तुलना की है, मुझे कई गायब जार, एक्सई, डीएल और कुछ गुण फाइलें मिली हैं।

JAVA_HOME -- C:\Program Files\Java\jdk1.7.0_10 
JREFX_HOME -- C:\Program Files\Oracle\JavaFX 2.2 Runtime 
Path contains an entry of C:\Program Files\Java\jdk1.7.0_10\bin 

JAVA_HOME और JREFX_HOME मेरी build.xml चींटी-javafx.jar और jfxrt.jar लेने के लिए के रूप में उपयोग किया जाता है - -

${env.JAVA_HOME}/lib/ant-javafx.jar 
${env.JREFX_HOME}/lib/jfxrt.jar 

मेरे चरणों

मैं इन वातावरण सेटिंग है बंडल बनाने के लिए -

<target name="CreatingExe" depends="SignedJar"> 
      <fx:deploy width="800" height="600" nativeBundles="all" outdir="${OutputPath}" outfile="${app.name}"> 
       <fx:info title="${app.title}"/> 
        <fx:application name="${app.title}" mainClass="${main.class}"/> 
        <fx:resources> 
         <fx:fileset dir="${OutputPath}" includes="*.jar"/> 
       <fx:fileset dir="${WorkingFolder}/temp"/> 
      </fx:resources> 
     </fx:deploy> 
</target> 

build.xml में और क्या आवश्यक है ताकि एप्लिकेशन exe के साथ सही ढंग से लॉन्च हो सके ?

धन्यवाद

+1

jdk7u10 में सभी javafx रनटाइम और विकास उपकरण शामिल हैं, इसलिए आपको jdk निर्देशिका के बाहर javafx बिट्स का स्रोत या उपयोग नहीं करना चाहिए - यानी 'C: \ Program Files \ Oracle \ JavaFX 2.2 रनटाइम 'से कुछ भी उपयोग न करें। – jewelsea

+0

@jewelsea हमने jfxrt.jar को लेने के लिए अपना रास्ता अपडेट किया है - $ {env.JAVA_HOME} /jre/lib/jfxrt.jar, कुछ भी नहीं बदला !! "बंडल \ MyApplication \ runtime \ jre" फ़ोल्डर में बंडल बनाने के दौरान मैं पूर्ण जेआर फ़ोल्डर की प्रतिलिपि कैसे बना सकता हूं। –

+0

यह कह रहा है कि "जावा रनटाइम का केवल एक सबसेट डिफ़ॉल्ट रूप से शामिल किया गया है। कुछ वैकल्पिक और शायद ही कभी उपयोग की जाने वाली फ़ाइलों को पैकेज आकार को कम करने के लिए बाहर रखा जाता है, जैसे सभी निष्पादन योग्य। यदि आपको कुछ ऐसा चाहिए जो डिफ़ॉल्ट रूप से शामिल नहीं है, तो आपको आवश्यकता है इसे पोस्ट-प्रोसेसिंग चरण के रूप में कॉपी करने के लिए। इंस्टॉल करने योग्य पैकेज के लिए, आप इसे कॉन्फ़िगर स्क्रिप्ट से कर सकते हैं जिसे स्वयं निहित एप्लिकेशन फ़ोल्डर पॉप्युलेट करने के बाद निष्पादित किया जाता है। " लेकिन यह कैसे करें? मेरे पास कोई विचार नहीं है। –

उत्तर

2
JavaFX exe से JRE को कॉपी "C: \ Program Files \ जावा \ jdk_version \ JRE" द्वारा हल की शुरूआत नहीं की समस्या

को \ बंडलों \ MyApplication \ क्रम \ JRE में निर्माण चरणों \ Program Files \ जावा \ jdk_version

धन्यवाद

:

<target name="CopyJre" depends="CreatingExe"> 
<delete dir="${app_path}/bundles/MyApplication/runtime/jre"/> 
<mkdir dir="${app_path}/bundles/MyApplication/runtime/jre"/> 
<copy todir=${app_path}/bundles/MyApplication/runtime/jre"> 
    <fileset dir="${env.JAVA_HOME}/jre" /> 
</copy> 
</target> 

JAVA_HOME = सी - के रूप में exe बनाने पर