顯示具有 java 標籤的文章。 顯示所有文章
顯示具有 java 標籤的文章。 顯示所有文章

2009年9月24日 星期四

eclise problem in snow leopard when running java 1.6

error:
"java.lang.NoClassDefFoundError: apple/laf/CoreUIControl"

solution:
add /System/Library/Frameworks/JavaVM.framework/Versions/A/Frameworks/JavaRuntimeSupport.framework/Versions/A/Resources/Java/JavaRuntimeSupport.jar
to classpath of run configuration

2009年9月20日 星期日

call java from native program

1. create Java VM
JavaVM *jvm = NULL;
JNIEnv *env = NULL;
JavaVMInitArgs vm_args;
JavaVMOption options[2];
args.nOptions = 2;
args.version = JNI_VERSION_1_6;
options[0].optionString = "-Xmx512m";
options[1].optionString ="-Djava.class.path=test.jar:test2.jar";
args.options = options;
#ifdef FOR_MAC_OS
setenv("JAVA_JVM_VERSION", "1.6",1);
#endif
JNI_CreateJavaVM(&jvm, (void **)&env, &args);

(2) get class & method of class
jclass aClass = (*env)->FindClass(env, "Test");
jmethodID aid = (*env)->GetStaticMethodID(env, aClass,"main","([Ljava/lang/String;)V");


(3) call method of class
jobjectArray applicationArgs;
jstring applicationArg0;
applicationArgs = (*env)->NewObjectArray(env, 1, (*env)->FindClass(env, "java/lang/String"), NULL);
applicationArg0 = (*env)->NewStringUTF(env, "Test");
(*env)->SetObjectArrayElement(env, applicationArgs, 0, applicationArg0);
(*env)->CallStaticVoidMethod(env, aClass, aid, applicationArgs);

2009年9月18日 星期五

create java app on mac

use "Jar Bundler"

2009年9月17日 星期四

let java menu bar replace app menu bar

method 1:
-Dcom.apple.macos.useScreenMenuBar="true"

method 2:
System.setProperty("com.apple.macos.useScreenMenuBar","true");

2009年9月16日 星期三

compile jni program on xcode

1. set header search path for app target from build panel:
/System/Library/Frameworks/JavaVM.framework/Versions/1.6/Headers

2. add JavaVM.framework

java location in mac

/System/Library/Frameworks/JavaVM.framework

2009年9月15日 星期二

show content of jar file

ex:
jar tvf test.jar

compile JNI program on mac

gcc -o launch.o -I/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Headers -framework JavaVM launch.c -m64

java -cp

ex:
java -cp .:test.jar:test2.jar MyClass 16
main class is MyClass, argument for MyClass is 16