2011-07-24 39 views
1

我正在开发在Fedora 15下使用Eclipse。我导出了一个可运行的jar。它在Fedora中工作正常。但我无法在Windows上运行它。我已经安装了JRE。我甚至尝试安装JDK。没有错误日志,应用程序只是没有启动。Java .jar未在windows上运行

下面是输出

Microsoft Windows [Version 6.1.7601] 
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены. 

C:\Users\Артоюрос>java -jar C:\Lib.Ru2Epub.jar 
Exception in thread "main" java.lang.reflect.InvocationTargetException 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
     at java.lang.reflect.Method.invoke(Unknown Source) 
     at org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader.main(JarRsrcLoa 
der.java:58) 
Caused by: java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 

     no swt-gtk-3735 in java.library.path 
     no swt-gtk in java.library.path 
     Can't load library: C:\Users\└ЁЄю■Ёюё\.swt\lib\win32\x86\swt-gtk-3735.dl 
l 
     Can't load library: C:\Users\└ЁЄю■Ёюё\.swt\lib\win32\x86\swt-gtk.dll 

     at org.eclipse.swt.internal.Library.loadLibrary(Library.java:285) 
     at org.eclipse.swt.internal.Library.loadLibrary(Library.java:194) 
     at org.eclipse.swt.internal.C.<clinit>(C.java:21) 
     at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:63) 
     at org.eclipse.swt.internal.Converter.wcsToMbcs(Converter.java:54) 
     at org.eclipse.swt.widgets.Display.<clinit>(Display.java:132) 
     at ru.lib.epub.MainWindow.main(MainWindow.java:28) 
     ... 5 more 

C:\Users\Артоюрос> 
+6

要看到可能的错误消息,打开一个命令行窗口,并使用'Java的罐子your.jar'(不要简单地双击.jar文件)中运行应用程序 –

+0

@a_horse_with_no_name添加了输出。它似乎与SWT库有关,但确切地说,是什么。 – artouiros

+1

您需要复制SWT运行时库,以便程序可以找到它们。 SWT不是**标准Java安装的一部分,它是来自Eclipse的(本地)库。 –

回答

2

由于@a_horse_with_no_name表示“打开命令提示符并运行java -jar your.jar”。如果它有效,你必须将扩展名* .jar映射到名为“java”的程序。这是Windows的工作原理。双击* .txt文件启动记事本时,同样的机制正在工作。

因为我现在在linux上,所以我不能告诉你如何将扩展映射到程序,但它是在文件资源管理器的菜单中的某处。

1

它应该是一个可运行的罐子,这样你就可以使用双击窗口中运行它。

1

您可能正在使用绝对路径引用资源..因为您说您在Linux上开发了该应用程序。你可能会说new File("/etc/fstab"); ..这会在Windows上失败,因为它没有像这样的文件系统。

这通常是这种情况。

+0

其实你的例子是不正确的,如果这是在Windows上执行/ etc/fstab可以在驱动器上创建java vm提供的没有权限问题 – prusswan

1

swt dlls存在问题。

  1. 检查文件C:\用户\└ЁЄю■Ёюё.swt\ LIB \ WIN32 \ 86 \ SWT-gtk.dll存在
  2. 也许怎么把你不具备,你不能加载管理员权限?然后 转到Eclipse安装路径,右键单击eclipse.exe并选择“Properites”。从eclipse.exe属性弹出窗口中选择“兼容性”选项卡,然后在选项卡底部,在“Previlege Level”类别中选中以下复选框“以管理员身份运行此程序”。这应该可以解决问题。
  3. 有时候,简单地增加dll文件到lib文件夹可以帮助