如果把java转换为应用程序,那不就违背了java得初衷了吗-----跨平台?
解决方案 »
- 怎么new一个List<String>类型的组数
- 举个例子!sex?"男":"女"这种方法怎么称呼?
- 常见数据库JDBC连接
- 怎样显示菜单
- 请问怎样在java中实现图片的自动对齐
- 最近看了一下jdk1.5的新特性元数据,有问题要问大家,还有一个关于finalize()的权限问题
- (Help!)sqlj中如何查询varchar2类型?命名迭代器的类型对应列应该为什么属性?
- 精通JFreeChart的高手帮帮忙啊!!!
- 怎样把java-applet很好的运行在WINDOWS XP上,,送98分
- 请教大家一个比较棘手的问题,我在写程序的时候想使用import语句,可是总是发生错误,我该怎么办??
- 如果使用jbuilder4文档?
- SOS!SOS!我用VJ++做的Applet,在VJ++运行他所在的工程下能正常用IE浏览,但单独运行包含Applet超文本文件时,Applet却显示不出来,请各路高手不吝赐教。小弟在此先表感谢
java源码用什么编译?java编译器吗?那么java代码用什么解释?JVM吗?
<<<<<接楼上(都是一个人)>>>>> 那还是exe应用程序吗?
但要先反编译,再在vj中重新编译
是可以用反编译工具如 Jad,Mochca 生成原程序的。
反止反编译也是一些程序员头疼的事!!介绍大家一个不错的免费的java IDE。
http://www.jcreator.com/
是可以用反编译工具如 Jad,Mochca 生成原程序的。
反止反编译也是一些程序员头疼的事!!介绍大家一个不错的免费的java IDE。
http://www.jcreator.com/
first use a .bat file,
in the file, ...
java yourfile
....
then ...
" 有啊,在windows平台上可以用jet, 但是最好还是用Visual Cafe 4什么的 :) "jet 和 Visual Cafe 4 也可以 生成exe 文件吗!!
请提供相关的网址让别人参阅!
1)同目录 有hello.bat, hello.class
2)在 hello.bat 中写 java hello
3)运行hello-------------
以上的办法如果在 没有设 path 和没有 jdk 是不行的。
干脆完全c得了,
果然,java\bin目录下的可执行文件都是20kb!!!!!!!!可疑!!!俺支持您,做出来的话俺义务测试!
注: jdk1.2.2, jvm不是hotspot
--
* 先做准备一个待调用的java class, 比如:
class cool {
public static void main(String[] args) {
System.out.println("Cool!");
}
}* 准备调用jvm的c程序, 比如
//list of showme.c
#include <jni.h>#ifdef _WIN32
#define PATH_SEPARATOR ';'
#else /* UNIX */
#define PATH_SEPARATOR ':'
#endif#define USER_CLASSPATH "."main() {
JNIEnv *env;
JavaVM *jvm;
JDK1_1InitArgs vm_args;
jint res;
jclass cls;
jmethodID mid;
jstring jstr;
jobjectArray args;
char classpath[1024]; vm_args.version = 0x00010001; JNI_GetDefaultJavaVMInitArgs(&vm_args); sprintf(classpath, "%s%c%s", vm_args.classpath, PATH_SEPARATOR, USER_CLASSPATH);
vm_args.classpath = classpath;
res = JNI_CreateJavaVM(&jvm, (void **)&env, &vm_args); if (res < 0) {
printf("Can't create Java VM\n");
exit(1);
} cls = (*env)->FindClass(env, "cool");
if (cls == 0) {
printf("Can't find Cool class\n");
exit(1);
}
mid = (*env)->GetStaticMethodID(env, cls, "main", "([Ljava/lang/String;)V");
if (mid == 0) {
exit(1);
}
jstr = (*env)->NewStringUTF(env, "hell!");
if (jstr == 0) {
printf("Out of memory\n");
exit(1);
} (*env)->CallStaticVoidMethod(env, cls, mid, jstr); /* printf("killing jvm ... "); */
(*jvm)->DestroyJavaVM(jvm);
/* printf("done!\n"); */}
//end of list* 在linux下编译showme.c
[假设jdk为1.2.2, 安装在/usr/local下]
[建议将/usr/local/jdk1.2.2/jre/lib/i386, /usr/local/jdk1.2.2/jre/lib/i386/classic, /usr/local/jdk1.2.2/jre/lib/i386/native_threads三个目录加到/etc/ld.so.conf]
~: gcc -I/usr/local/jdk1.2.2/include -I/usr/local/jdk1.2.2/include/linux -L/usr/local/jdk1.2.2/jre/lib/i386/classic -ljvm -D_REENTRANT -lpthread showme.c -o showme* 运行showme(假设cool.class和showme在同一目录下)~: ./showme
> Cool!--
to hccpro:
不要以为不可能哦~ 这次就有可能要做,呵呵 ...
沒錯 jet 和 visual cafe 2.5 以上版本
就可以把 java 程序轉成可執行程序 exe 了
但是 Visual Cafe 是不能把 .class 直接
轉成 exe 的,它只能編繹你的 java 源代碼
變成可執文件,而 jet 則能把你的 .class 文件
轉變成 exe,但是生成的 exe 不及 VisualCafe
生成的 exe,你自己衡量下吧.
但是如果你只有 .class 文件千萬不要用 jad 把
它反組繹成 *.java ,再用 VisualCafe 把它變成
可執行文件 exe ,因為那將是你的不幸,
如果你的 *.class 程序稍為複雜,那你將面對反組
繹的程序不是你想要的程序,雖然它可能編繹成功
我曾經為了反組繹一條 java 程序花了三個星期
因為要為反組繹後的源程式碼除錯...
Good Luck
你有沒有考慮到運行庫的問題呢
把你的程序拿到別人的機械上跑
別人也一定有你的運行庫嗎??? To ServletBoy
還有 jet 好像是運行 mfc 庫的
而 VisualCafe 則是要運行它自己的
運行庫的,所以如果要運行 VisualCafe
編繹出來的 exe ,一定要裝上它的運行庫
好像叫甚麼 snjrt*.exe 的.
至於 jet 到 www.newhua.com 處找吧
VisualCafe 到各大院校的 ftp 處找吧
一定有的,( 好像北大的 ftp 有 ) .
安裝版本,它會把所需的運行庫
安裝到你的機械上.
如果己經安裝了 VisualCafe 那麼
運行庫己經安裝了.
是不能把 java 程序編繹成 exe 的 .
因为servletboy说"通过 C++ 调用 java hello 的方法 不知如何!再把C++文件编译成执行文件。" 所以 ... 不过你确实提醒我了,谢谢 :) 不知怎么的,总觉得每个人的机器上都应该有jre, 因此也忽略了很多问题, hehehe ...