我嘗試使用下面的代碼啓動從C++應用程序的Java應用程式:錯誤使用CreateProcess的
#include <windows.h>
#include <memory.h>
#include <tchar.h>
int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) {
STARTUPINFOW siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
if (CreateProcess(TEXT("c:\\java\\jre\\bin\\java.exe"), TEXT("-jar testapp.jar"), NULL, NULL, false, CREATE_DEFAULT_ERROR_MODE, NULL, NULL, &siStartupInfo, &piProcessInfo) == false) {
MessageBox(NULL, L"Could not load app", L"Error", 0);
}
CloseHandle(piProcessInfo.hProcess);
CloseHandle(piProcessInfo.hThread);
return 0;
}
當我建立並運行程序,我得到了以下錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: testapp/jar
Caused by: java.lang.ClassNotFoundException: testapp.jar
at: java.net.URLClassLoader$1.run(Uknown Source)
at: java.security.AccessController.doPrivileged(Native Method)
at: java.net.URLClassLoader.findClass(Uknown Source)
at: java.lang.ClassLoader.loadClass(Uknown Source)
at: sun.misc.Launcher$AppClassLoader.loadClass(Uknown Source)
at: java.lang.ClassLoader.loadClass(Uknown Source)
Could not find the main class: testapp.jar. Program will exit.
的testapp.jar
文件是從Eclipse項目導出的一個類運行的JAR文件:
public class Test {
public static void main(String[] args) {
System.out.println("test");
}
}
EXE和JAR文件位於完全相同的文件夾中,並且正在從命令行運行EXE。如果我通過將c:\java\jre\bin\java.exe -jar testapp.jar
放入命令提示符中直接運行JAR,則所有操作都按預期工作。
有沒有人有任何想法這裏發生了什麼?
編輯:謝謝大家的幫助,但它看起來像我現在正在工作。
啊,那確實有效!給你一個大綠色的勾號! – Zoltan 2010-02-26 05:04:46
我會老實說,爲什麼當前沒有了我。如果我找到了, – 2010-02-26 05:09:29
這個鬼鬼祟祟的空白...... – 2010-02-26 05:24:07