2012-09-05 5 views
-1

두 개의 SWT 애플리케이션이 있습니다. 응용 프로그램 1에서, 내가 APP2 전화 :SWT 애플리케이션에서 SWT 애플리케이션을 실행하는 방법은 무엇입니까?

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

앱 2 runned되지만 디스플레이를 가져올 때, 그것은 예외가 발생합니다 : 내가 명령 줄에서 APP2을 (App2.bat를 실행)를 호출하면

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) 

, 그것은 실행 잘하지만 그것은 app1에서 실행할 때 예외를 throw합니다. 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 C이 있지만

@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 

추가하는 경우 : \ 데이터 \ 프로젝트 \ EscapeNotes 확장 \ \ Updater를 \ 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를 추가했는데 예외가 있습니다. –

관련 문제