2012-09-05 122 views
-1

我有兩個SWT應用程序。從應用程序1,我請APP2:如何從SWT應用程序運行SWT應用程序?

Runtime.getRuntime().exec("App2.bat"); 

App2的是拼命地跑,但得到顯示時,它拋出異常:

java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
    no swt-win32-3740 in java.library.path 
    no swt-win32 in java.library.path 
    C:\Documents and Settings\Tran Dinh Thoai\.swt\lib\win32\x86\swt-win32-3740.dll: The referenced assembly is not installed on your system 
    Can't load library: C:\Documents and Settings\Tran Dinh Thoai\.swt\lib\win32\x86\swt-win32.dll 

    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source) 
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source) 
    at org.eclipse.swt.internal.C.<clinit>(Unknown Source) 
    at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source) 
    at com.escapenotes.updater.Checker.run(Checker.java:58) 
    at com.escapenotes.updater.Runner.main(Runner.java:20) 

當我打電話APP2(運行App2.bat)從命令行中,它運行但是它從app1運行時會拋出異常。我如何從app1運行app2?

這是App2.bat的內容:

@echo off 
    set JH=C:\Program Files\Java\jre6 
    set CP=C:\Data\Projects\EscapeNotes\extensions\Updater\bin 
    set XNP="%CP%";"%CP%\commons-logging-1.1.1.jar";"%CP%\aws-java-sdk-1.0.007.jar";"%CP%\commons-codec-1.4.jar";"%CP%\commons-httpclient-3.0.1.jar";"%CP%\jsoup-1.6.2.jar";"%CP%\log4j-1.2.8.jar";"%CP%\text.jar";"%CP%\jface.jar";"%CP%\jfacetext.jar";"%CP%\osgi.jar";"%CP%\runtime.jar";"%CP%\swt.jar" 
    "%JH%\bin\java.exe" -cp %XNP% com.escapenotes.updater.Runner %1 

當我加入-Djava.library.path

@echo off 
set JH=C:\Program Files\Java\jre6 
set CP=C:\Data\Projects\EscapeNotes\extensions\Updater\bin 
set XNP="%CP%";"%CP%\commons-logging-1.1.1.jar";"%CP%\aws-java-sdk-1.0.007.jar";"%CP%\commons-codec-1.4.jar";"%CP%\commons-httpclient-3.0.1.jar";"%CP%\jsoup-1.6.2.jar";"%CP%\log4j-1.2.8.jar";"%CP%\text.jar";"%CP%\jface.jar";"%CP%\jfacetext.jar";"%CP%\osgi.jar";"%CP%\runtime.jar";"%CP%\swt.jar" 
"%JH%\bin\java.exe" -Djava.library.path="C:\Data\Projects\EscapeNotes\extensions\Updater\bin" -cp %XNP% com.escapenotes.updater.Runner %1 

雖然有C:\數據\項目\ EscapeNotes \擴展\更新\ bin \ swt-win32-3740.dll,我得到了異常:

java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons: 
    C:\Data\Projects\EscapeNotes\extensions\Updater\bin\swt-win32-3740.dll: The referenced assembly is not installed on your system 
    no swt-win32 in java.library.path 
    C:\Documents and Settings\Tran Dinh Thoai\.swt\lib\win32\x86\swt-win32-3740.dll: The referenced assembly is not installed on your system 
    Can't load library: C:\Documents and Settings\Tran Dinh Thoai\.swt\lib\win32\x86\swt-win32.dll 

    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source) 
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source) 
    at org.eclipse.swt.internal.C.<clinit>(Unknown Source) 
    at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source) 
    at com.escapenotes.updater.Checker.run(Checker.java:58) 
    at com.escapenotes.updater.Runner.main(Runner.java:20) 
+1

請將「App2.bat」的內容添加到您的問題中。 – Baz

+0

我已經添加了App2.bat的內容到我的問題 –

回答

0

從異常看起來像swt-win32庫沒有定義java.library.path環境變量。在您的「App2.bat」中,請提供以下-D選項:

java -Djava.library.path=[path to your library] 
+0

我添加了-Djava.library.path但我收到了異常 –