JavaFX在我的64位Mac机上使用netbeans构建';t在32位Linux上运行

JavaFX在我的64位Mac机上使用netbeans构建';t在32位Linux上运行,java,cross-platform,javafx-2,Java,Cross Platform,Javafx 2,我有点困惑。我有一个JavaFX程序,我正在做(爱好),它在我的Mac上构建并运行得很好。(我有最新的Oracle Java 7)。当我在我的32位Linux系统(也是最新的Oracle版本)上运行构建在Mac(最新的NetBeans)上的jar文件时,会出现以下错误: java.lang.reflect.InvocationTargetException file:/home/me/aFolder/SomeOne/Saved/Something.jar!/Something/mainWindo

我有点困惑。我有一个JavaFX程序,我正在做(爱好),它在我的Mac上构建并运行得很好。(我有最新的Oracle Java 7)。当我在我的32位Linux系统(也是最新的Oracle版本)上运行构建在Mac(最新的NetBeans)上的jar文件时,会出现以下错误:

java.lang.reflect.InvocationTargetException
file:/home/me/aFolder/SomeOne/Saved/Something.jar!/Something/mainWindow.fxml
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2186)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2028)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2744)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2723)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2709)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2696)
   at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2685)
   at Something.Something.start(Something.java:33)
   at com.sun.javafx.application.LauncherImpl$5.run(LauncherImpl.java:319)
   at com.sun.javafx.application.PlatformImpl$5.run(PlatformImpl.java:215)
   at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:179)
   at com.sun.javafx.application.PlatformImpl$4$1.run(PlatformImpl.java:176)
   at java.security.AccessController.doPrivileged(Native Method)
   at com.sun.javafx.application.PlatformImpl$4.run(PlatformImpl.java:176)
   at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:76)
   at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
   at com.sun.glass.ui.gtk.GtkApplication$3$1.run(GtkApplication.java:82)
   at java.lang.Thread.run(Unknown Source)
java:33是我调用的地方

AnchorPane mainWindowPane =     
  (AnchorPane)FXMLLoader.load(UdoMail.class.getResource("mainWindow.fxml"));
所以,我很困惑从哪里开始。这是一个构建在我的Mac上的jar文件,移动到32位Linux(运行最新的32位Oracle Java),然后运行

更奇怪的是,如果我在32位Linux上构建这个,然后在Mac上运行Linux构建的jar文件,我在Mac上(实际上)会得到相同的错误

如果我在构建的平台上运行,一切都会正常运行。(也就是说,如果我将代码构建在Linux上,它将在Linux上完美运行,但不会在Mac上运行。)

因为我似乎无法在Linux上为Mac构建的jar文件运行调试器(反之亦然),所以我有点不知道从哪里开始查找。我已经确定使用了File.separator并查找了其他特定于操作系统的内容,但我想了解fxmloader.java中的这些行(在源代码中)是什么,以了解它为什么会出错。注释掉大部分代码后,似乎导致barf的一行是一个简单的文件实例化:

File myFile = new File(userDirectoryString);
我使用了许多文件和目录,这一行是在我的代码中第一次调用文件或目录用法。我已经验证了字符串“userDirectoryString”,它是正确的


有什么想法吗?

我只能从你在这里这个概念上帮助你:

public static final String INITIALIZE_METHOD_NAME = "initialize";

// Initialize the controller
            Method initializeMethod =   getControllerMethods().get(INITIALIZE_METHOD_NAME);

            if (initializeMethod != null) {
                try {
                    MethodUtil.invoke(initializeMethod, controller, new Object [] {});
                } catch (IllegalAccessException exception) {
                    // TODO Throw when Initializable is deprecated/removed
                    // throw new LoadException(exception);
                } catch (InvocationTargetException exception) {
                    throw new LoadException(exception);
                }
            }
您可以在OpenJFX中找到此代码


我们可以看到,这意味着initialize()方法在工作期间引发了一个异常。

您必须在它应该运行的系统上编译代码。JVM扫描您的系统并为构建它的机器写入字节码。您的代码没有问题,这是JVM的工作方式