如何编译这个java应用程序

时间:2013-06-08 16:11:47

标签: java c

我需要在Windows上从这段代码编译Java应用程序:

http://www.falstad.com/vector3dm/base.java

提及

的评论
// this file must be run through cpp with one of BUILD_E, BUILD_V,
// BUILD_M defined before compiling with java compiler.  This was done
// to reduce class file sizes.

我不知道这意味着什么。 cpp代表C ++编译器吗?如何在这个java代码上运行它? 我在代码中看到了一些#define语句。 作为一个Java代码,我希望'javac base.java'能够正常工作

有人可以解释一下我需要做什么才能编译代码。

谢谢。

修改

@Ahmed Masaud:
我从annarres网站下载了anarres-cpp-bin-1.2.6.tar.gz,并在我的JDK目录中解压缩。 这就是我现在所拥有的:

C:\ Program Files \ Java \ jre6 \ bin \ base.java

C:\ Program Files \ Java \ jre6 \ lib \ anarres-cpp.jar

C:\ Program Files \ Java \ jre6 \ lib \ gnu.getopt.jar

运行您指示的命令时

  

java -Xmx128M -cp lib / anarres-cpp.jar:lib / gnu.getopt.jar   org.anarres.cpp.Main -o base-e.java -DBUILD_E base.java

这是我得到的:

  

线程“main”中的异常java.lang.NoClassDefFoundError:   org / anarres / cpp / Main引起:java.lang.ClassNotFoundException:   org.anarres.cpp.Main           在java.net.URLClassLoader $ 1.run(未知来源)           at java.security.AccessController.doPrivileged(Native Method)           at java.net.URLClassLoader.findClass(Unknown Source)           at java.lang.ClassLoader.loadClass(Unknown Source)           at sun.misc.Launcher $ AppClassLoader.loadClass(Unknown Source)           at java.lang.ClassLoader.loadClass(Unknown Source)无法找到主类:org.anarres.cpp.Main。程序将退出。

它看起来无法找到'org.anarres.cpp.Main'

1 个答案:

答案 0 :(得分:1)

CPP意味着C预处理器而不是C ++。他们要求你做的是用特定的定义运行它:

如果您使用的是Linux,可以输入

来完成此操作
  cpp -o base-e.java -DBUILD_E base.java

这将创建一个base-e.java文件,该文件使用base.java中的BUILD_E选项

如果您正在使用Windows抓取mcpp:

http://mcpp.sourceforge.net/download.html

并使用mcpp做同样的事情。

有一个替代的jcpp是一个用java编写的C预处理器:

http://www.anarres.org/projects/jcpp/

可能是更好的选择。

jcpp非常接近GNU cpp;因为它基于它,所以上面的命令行应该工作,并且该网站上有预编译的版本,所以:

java -Xmx128M -cp lib / anarres-cpp.jar:lib / gnu.getopt.jar org.anarres.cpp.Main -o base-e.java -DBUILD_E base.java

正确的命令行:

java -Xmx128M -cp ./lib/anarres-cpp.jar:./lib/gnu.getopt.jar: org.anarres.cpp.Main -DBUILD_E base.java > base-e.java

jcpp

中没有-o标志支持

确保将base.java放在anarres-cpp-bin-1.2.6文件夹中,然后从那里运行上面的命令。

然后你可以随时随地移动base-e.java。

或者你可以在命令行等上提供base.java和base-e.java的完整路径。