Deployment 部署JavaFX应用程序时出现运行时错误

Deployment 部署JavaFX应用程序时出现运行时错误,deployment,javafx-2,runtime-error,Deployment,Javafx 2,Runtime Error,我正在尝试部署一个JavaFX应用程序。我一直在开发的应用程序相当复杂,包括几个库。当我创建jnlp并尝试运行它时,总是会收到一条“运行时错误。单击以获取详细信息”消息。有人建议我试着做一个简单的Hello World应用程序,看看它是否是包含库的问题。我试过了,但仍然出现了“运行时错误” 下面是我尝试使用的build.xml <project name="App" default="default" basedir="." xmlns:fx="javafx:com.sun.jav

我正在尝试部署一个JavaFX应用程序。我一直在开发的应用程序相当复杂,包括几个库。当我创建jnlp并尝试运行它时,总是会收到一条“运行时错误。单击以获取详细信息”消息。有人建议我试着做一个简单的Hello World应用程序,看看它是否是包含库的问题。我试过了,但仍然出现了“运行时错误”

下面是我尝试使用的build.xml

    <project name="App" default="default" basedir="." xmlns:fx="javafx:com.sun.javafx.tools.ant">
        <taskdef resource="com/sun/javafx/tools/ant/antlib.xml"
             uri="javafx:com.sun.javafx.tools.ant"
             classpath="C:\Program Files\Java\jdk7\lib\ant-javafx.jar" />


        <target name="default">
        <fx:deploy width="600" height="400" outdir="${basedir}/dist" outfile="App">
            <fx:application name="App" mainClass="${javafx.main.class}"/>

            <fx:resources>
                <!-- include application jars -->
                <fx:fileset dir="${basedir}" includes="*.jar"/>
                <fx:fileset dir="${basedir}/lib" includes="*.jar"/> 
                <fx:fileset dir="${basedir}" includes="app.ini" />
                <fx:fileset dir="${basedir}/template" includes="*.template" />
            </fx:resources>

            <!-- request user level installation -->
            <fx:preferences install="false"/>
        </fx:deploy>
        </target>
    </project>

对于Hello World版本,我刚刚删除了
部分。 我从eclipse内部将它们作为ant任务运行。他们都在我的项目中创建了一个dist文件夹,其中包含一个.jnlp和一个.html文件。然后我点击jnlp运行应用程序,看到一个小窗口,上面有文本“Runtime error.click for details”。我点击它,得到一个错误窗口,上面写着“应用程序无法运行”。执行应用程序时出错。单击“详细信息”了解更多信息。“我单击“详细信息”按钮,看到一个包含以下信息的Java控制台(HelloWorld版本):

Java插件10.7.2.11
使用JRE版本1.7.0_07-b11 Java HotSpot(TM)64位服务器虚拟机
用户主目录=C:\Users\User
----------------------------------------------------
c:清除控制台窗口
f:在终结队列上终结对象
g:垃圾收集
h:显示此帮助消息
l:转储类加载器列表
m:打印内存使用情况
o:触发日志记录
q:隐藏控制台
r:重新加载策略配置
s:转储系统和部署属性
t:转储线程列表
v:转储线程堆栈
x:清除类加载器缓存
0-5:将跟踪级别设置为
----------------------------------------------------
匹配:Begintersal
Match:digest selected JREDesc:JREDesc[version 1.6+,heap=-1--1,args=null,href=http://java.sun.com/products/autodl/j2se,sel=false,null,null],JREInfo:JREInfo用于索引0:
平台为:1.7
产品编号:1.7.0_07
地点为:http://java.sun.com/products/autodl/j2se
路径为:C:\Program Files\Java\jre7\bin\javaw.exe
args为:null
本机平台为:Windows,amd64[x86_64,64位]
JavaFX运行时是:在C:\Program Files\Java\jre7中找到JavaFX 2.2.1\
启用的是:true
注册的是:真的
系统是:正确的
匹配:忽略maxHeap:-1
匹配:忽略初始化堆:-1
匹配:正在消化vmargs:null
匹配:已消化的vmargs:[JVMParameters:isSecure:true,args:]
匹配:累积后的JVM参数:[JVM参数:isSecure:true,参数:]
Match:digest LaunchDesc:file:/G:/workspace/JavaProjects/JavaFXHelloWorld/dist/HelloWorld.jnlp
匹配:摘要属性:[]
匹配:JVM参数:[JVM参数:ISSecurity:true,参数:]
匹配:endTraversal。。
匹配:JVM参数最终值:
匹配:运行JREInfo版本匹配:1.7.0.07==1.7.0.07
匹配:运行JVM参数匹配:拥有:满足需要:
CacheEntry[文件:/G:/workspace/JavaProjects/JavaFXHelloWorld/dist/HelloWorld.jnlp]:updateAvailable=false,lastModified=Fri Sep 14 07:13:28 MDT 2012,长度=915
当我运行我正在使用的应用程序时,我得到了一个几乎相同的错误。 我刚刚卸载了java,然后重新安装了最新的SDK。除了可能应用程序使用64位JVM而不是我安装的32位JVM之外,这没有做任何事情。错误消息保持不变

有人知道我做错了什么吗?我的构建脚本不正确吗?有更好的部署方法吗?我不需要jnlp,所以我对任何部署方法都持开放态度。我只需要一些可以在windows机器上运行的东西,可能还有mac

我试着用谷歌搜索我的问题,我搜索了StackOverflow,似乎找不到任何相关的东西。我可能只是使用了错误的搜索词

任何帮助都将不胜感激

谢谢,
Hardy

如果您正在使用netbeans,请右键单击该项目并转到项目属性,然后转到库,然后单击管理平台,然后选择默认的Javafx平台,然后转到Javafx选项卡,然后将Javafx SDK位置更改为Java fx 2 SDK所在的位置,并同样更改Javafx JRE。希望这将解决您的问题问题。

我最终发现,在我的案例中,这个问题是由jar签名过程中的错误引起的。通过清空Java缓存(在Windows上,这可以通过Java控制面板完成)可以避免这个问题。这样做并重建后,我的案例中不再出现错误


不过,我不确定这是否能解决您的问题,因为您似乎没有进行任何签名。

您是否尝试使用netbeans?我部署的应用程序一直存在问题,直到我(遗憾地)将所有内容都移动到netbeans。此外,您可能需要检查绝对路径。我发现JavaFX无法很好地处理绝对文件(安全问题)啊hhhgggrrr,我讨厌这样做。我想我必须使用netbeans进行部署,但我不会将其用于开发。我想知道,我以后也会尝试,但也许netbeans使用的build.xml可以在eclipse中与Ant一起使用。(交叉手指)谢谢你的帮助。@Brunoveira,你应该添加你的评论作为回答,这样我就可以接受了。
Java Plug-in 10.7.2.11
Using JRE version 1.7.0_07-b11 Java HotSpot(TM) 64-Bit Server VM
User home directory = C:\Users\user
----------------------------------------------------
c:   clear console window
f:   finalize objects on finalization queue
g:   garbage collect
h:   display this help message
l:   dump classloader list
m:   print memory usage
o:   trigger logging
q:   hide console
r:   reload policy configuration
s:   dump system and deployment properties
t:   dump thread list
v:   dump thread stack
x:   clear classloader cache
0-5: set trace level to <n>
----------------------------------------------------
Match: beginTraversal
Match: digest selected JREDesc: JREDesc[version 1.6+, heap=-1--1, args=null,         href=http://java.sun.com/products/autodl/j2se, sel=false, null, null], JREInfo: JREInfo for index 0:
platform is: 1.7
product is: 1.7.0_07
location is: http://java.sun.com/products/autodl/j2se
path is: C:\Program Files\Java\jre7\bin\javaw.exe
args is: null
native platform is: Windows, amd64 [ x86_64, 64bit ]
JavaFX runtime is: JavaFX 2.2.1 found at C:\Program Files\Java\jre7\
enabled is: true
registered is: true
system is: true

Match: ignoring maxHeap: -1
Match: ignoring InitHeap: -1
Match: digesting vmargs: null
Match: digested vmargs: [JVMParameters: isSecure: true, args: ]
Match: JVM args after accumulation: [JVMParameters: isSecure: true, args: ]
Match: digest LaunchDesc: file:/G:/workspaces/JavaProjects/JavaFXHelloWorld/dist/HelloWorld.jnlp
Match: digest properties: []
Match: JVM args: [JVMParameters: isSecure: true, args: ]
Match: endTraversal ..
Match: JVM args final: 
Match: Running JREInfo Version    match: 1.7.0.07 == 1.7.0.07
Match: Running JVM args match: have:<>  satisfy want:<>
CacheEntry[file:/G:/workspaces/JavaProjects/JavaFXHelloWorld/dist/HelloWorld.jnlp]:    updateAvailable=false,lastModified=Fri Sep 14 07:13:28 MDT 2012,length=915