2011-07-24 77 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文件夾可以幫助