java - 通过 java -jar 执行失败,而相同的代码通过 eclipse 运行良好

标签 java eclipse jar export

我最近一直在打包一个项目,但它变成了一场噩梦。简而言之,这就是问题所在。我有一个项目,我想将其作为 jar 文件,并最终将其用作 Java Web Start。

当我尝试通过 Eclipse 构建和运行代码时,它运行良好。但是,当我将它导出为“可运行的 jar”并尝试通过终端运行它时,我得到了似乎依赖于引用库的神秘异常。我已经检查过库在 jar 文件中,所以它们并没有丢失。

根据我导出它的方式,异常的细节会发生变化,但它似乎源于同一个问题。下面是导出项目时抛出的堆栈跟踪,其中依赖库打包为“主”jar 中的 jar。

Exception in thread "main" java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoader.java:58)
Caused by: java.lang.ExceptionInInitializerError
at org.eclipse.gef.tools.MarqueeSelectionTool.<init>(MarqueeSelectionTool.java:99)
at org.gvt.MarqueeZoomTool.<init>(MarqueeZoomTool.java:16)
at org.gvt.action.MarqueeZoomToolAction$1.<init>(MarqueeZoomToolAction.java:28)
at org.gvt.action.MarqueeZoomToolAction.createTool(MarqueeZoomToolAction.java:28)
at org.gvt.action.AbstractGEFToolAction.<init>(AbstractGEFToolAction.java:24)
at org.gvt.action.MarqueeZoomToolAction.<init>(MarqueeZoomToolAction.java:20)
at org.gvt.TopMenuBar.createBarMenu(TopMenuBar.java:113)
at org.gvt.ChisioMain.createMenuManager(ChisioMain.java:612)
at org.eclipse.jface.window.ApplicationWindow.addMenuBar(ApplicationWindow.java:235)
at org.gvt.ChisioMain.main(ChisioMain.java:144)
... 5 more
Caused by: java.lang.IllegalArgumentException: Argument cannot be null
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.graphics.Resource.<init>(Unknown Source)
at org.eclipse.swt.graphics.Cursor.<init>(Unknown Source)
at org.eclipse.draw2d.Cursors.<clinit>(Cursors.java:170)
... 15 more

顺便说一下,我保存了导出过程的 XML/ANT 输出,如果她感兴趣的话我可以添加她。为了减少困惑,我选择省略它。

关于这里可能出现的问题有什么想法吗?

编辑: 我开始考虑这是否是 SWT-GTK 库的 32/64 位问题。任何人都可以证实或否认这一点吗?

最佳答案

这里的异常(exception)与依赖关系无关。这是一个编程错误:“有人将空参数传递给不允许它的 SWT 方法。”

根据堆栈跟踪,您正在使用 GEF。如何在 Eclipse 中以 Java 应用程序或 Eclipse 应用程序运行代码?

如果您谈论的是 Eclipse 应用程序,则不能简单地将其导出为可运行的 Jar。您将必须创建一个 RCP。在 Google 上查找 RCP 教程,您会发现很多有趣的结果。

关于java - 通过 java -jar 执行失败,而相同的代码通过 eclipse 运行良好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3923159/

相关文章:

java - 如何在状态行中显示 ProgressMonitorDialog 和进度

c++ - Eclipse,C/C++,链接同一工作区中的两个项目

jar - 如何查看jar文件的版本?

java - 在Eclipse中,在依赖maven项目的动态web项目中,如何从maven项目中获取jar?

java - 如何创建依赖于另一个 JAR 的 JAR?

java - 频繁调用 Solr 查询期间 Solr 错误 -> "Cannot assign requested address (connect failed)"

javascript - Eclipse Javascript 如何关闭缺少分号警告?

java - 在android中,我成功播放了视频,但媒体 Controller 没有显示。下面进一步给出

Java 方法调用/行静态

java - 创建多种类型的 jpa 实体