为什么我的Java桌面应用程序无法运行?

为什么我的Java桌面应用程序无法运行?,java,swing,compiler-errors,javafx,netbeans-7,Java,Swing,Compiler Errors,Javafx,Netbeans 7,我用JavaFX2构建了一个Java桌面应用程序,然后尝试运行JAR。运行失败,因此我通过命令行运行它以获取错误。以下是我得到的: 编辑:我更新了堆栈跟踪,因为添加/删除了一些代码行(错误相同) 经过更多研究: 经过一些互联网研究,我发现以下类似的讨论,我仍在研究: 看起来msvcr100.dll和mat.dll与JavaFX运行时相关。我有JavaFX Netbeans插件,但没有运行时。我现在有了它,但这并没有解决或改变问题。我在…netbeans\7.0\lib\javafx2

我用JavaFX2构建了一个Java桌面应用程序,然后尝试运行JAR。运行失败,因此我通过命令行运行它以获取错误。以下是我得到的:

编辑:我更新了堆栈跟踪,因为添加/删除了一些代码行(错误相同)


经过更多研究:

经过一些互联网研究,我发现以下类似的讨论,我仍在研究:

看起来msvcr100.dll和mat.dll与JavaFX运行时相关。我有JavaFX Netbeans插件,但没有运行时。我现在有了它,但这并没有解决或改变问题。我在…netbeans\7.0\lib\javafx2 win\bin\中找到了msvcr100.dll和mat.dll,并且(在安装运行时之后)在C:\Program Files\Oracle\JavaFX runtime 2.0\bin中也找到了msvcr100.dll和mat.dll。在使用Netbeans运行时,我的程序看起来正处于正确的位置


这不是我第一次运行这个程序。在过去的尝试中,它是成功的。通过Netbeans运行不会产生任何错误,并且程序运行正常


这可能是一个外汇错误吗?我如何让我的程序看起来正确,为什么不正确?

我认为您的
路径未设置为指向所需的JNI库

请按照以下说明操作:

  • 请键入
    echo%PATH%
    并报告您看到的内容
  • 在同一命令提示下,键入
    set PATH=%PATH%;C:\Users\user\Desktop\bin
  • 在相同的命令提示符下,重复原来的命令:
    java-jar DesktopApp.jar

  • 如果我没有弄错的话,这与Microsoft Visual C运行时有关。尝试安装Microsoft

    然而,一个更有趣的问题是,为什么您的应用程序试图使用它,为什么它在您的桌面上寻找它

    编辑:尝试添加
    adddlllocationPath(“C:\\WINDOWS\\system32\\msvcr100.dll”)
    作为应用程序的第一行代码

    
        /**
         * Allows you to add a path to the library path during runtime
         * @param dllLocation The path you would like to add
         * @return True if the operation completed successfully, false otherwise
         */
        public static boolean addDllLocationToPath(final String dllLocation)
        {
            //our return value
            boolean retVal = false;
            try
            {
                System.setProperty("java.library.path", System.getProperty("java.library.path") + ";" + dllLocation);
                //get the sys path field
                Field fieldSysPath = ClassLoader.class.getDeclaredField("sys_paths");
                fieldSysPath.setAccessible(true);
                fieldSysPath.set(null, null);
                retVal = true;
            }
            catch (Exception e)
            {
                System.err.println("Could not modify path");
            }
            return retVal;
        }
    

    经过更多的研究,我决定将位于*.netbeans\7.0\lib\javafx2 win*和*C:\Program Files\Oracle\JavaFX runtime 2.0*中的bin文件夹复制到我的JAR所在的位置


    这成功了!我猜bin文件夹中的DLL是JavaFX所必需的。不知道为什么它们不会自动被包括在内。

    我也有同样的问题,但我就是这样解决的。 在Windows下,我创建了一个具有以下行的批处理文件

    call c:\bkn-batfiles\setclasspath.bat 
    set
    java -jar  E:\DATA\JAVACLASSES-NETBEANS\search_files_with_java_fx\dist\search_files.jar 
    pause 
    
    它运行得很好。在setcalsspath.bat中,我设置路径如下

    SET PATH=.;C:\bkn-batfiles;
    SET PATH=%PATH%c:\Program Files\java\jdk1.7.0_03\bin;
    SET PATH=%PATH%c:\Program Files\java\jdk1.7.0_03\lib;
    SET PATH=%PATH%C:\Program Files\Oracle\JavaFX 2.0 SDK\rt\bin;
    

    您是否为类定义了构造函数?另外,默认JVM是SUN的官方JVM吗?@Saher,添加构造函数
    public Main(){}
    没有帮助。JVM是java.com或sun.com的官方版本。错误来自于用于在NetBeans中成功运行的JVM。@Ajay,这是一个包含JavaFX2的Java应用程序。我有一个JFXPanel,其中一个场景嵌入到我的Swing GUI中。您可能想看看这个:。非常类似的讨论。msvcr100.dll是否存在于C:\Users\user\Desktop\bin\msvcr100.dll?C:\Users\user\Desktop\bin不存在,我认为它不应该存在。您确实需要将包含缺少dll的目录添加到路径中,但C:\Users\user\Desktop\bin目录不是您要查找的目录。我已经移动了我的JAR,lib文件夹和自述文件到我的桌面。但我不知道为什么它要找一个包含DLL的bin文件夹。我的程序没有使用任何DLL,除非它们应该包含在库中。它们可能是由您没有直接编码的东西加载的。你尝试安装可重新分配的包吗?微软Visual C++ 2010 X64可重新分发-100.30319已经在我的计算机上。请记住,我的程序在使用Netbeans运行时运行成功。我实现了您的代码,没有得到任何不同。它看起来是在同一个地方。然后我在C:\Windows \Stase32中查找MSVCR100.DLL,但没有找到它。好的,我仍然尝试安装Visual C++ 2010可重分发包(X86)的原始建议。
    call c:\bkn-batfiles\setclasspath.bat 
    set
    java -jar  E:\DATA\JAVACLASSES-NETBEANS\search_files_with_java_fx\dist\search_files.jar 
    pause 
    
    SET PATH=.;C:\bkn-batfiles;
    SET PATH=%PATH%c:\Program Files\java\jdk1.7.0_03\bin;
    SET PATH=%PATH%c:\Program Files\java\jdk1.7.0_03\lib;
    SET PATH=%PATH%C:\Program Files\Oracle\JavaFX 2.0 SDK\rt\bin;