是否可以使用CMake编译和运行Java代码?
在命令行中,我输入以下命令:
javac -classpath theClasspath mainClass.java
java -classpath theClasspath mainClass
如果可以的话,请给我一个实现的思路。
注:我不想生成一个jar文件;只需要编译Java类并尽可能地运行它。
谢谢。
更新:我已更改命令。我不知道为什么附加的文本没有显示出来。这可能是因为我使用了"<"和">"符号。
CMake对于编译Java代码和执行Java类文件的支持有限。
标准模块FindJava可用于查找已安装在本地计算机上的JDK。标准模块UseJava提供了一些用于Java的函数,其中包括一个名为add_jar
的函数,用于将Java源文件编译成jar文件。
以下是一个小示例,演示如何使用add_jar
。给定Java样例源文件HelloWorld.java
:
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
以下CMake列表文件将编译HelloWorld.java
成一个jar文件HelloWorld.jar
,并添加一个运行JVM的CMake测试:cmake_minimum_required (VERSION 2.8)
find_package(Java REQUIRED)
include(UseJava)
enable_testing()
project (HelloWorld NONE)
set(CMAKE_JAVA_COMPILE_FLAGS "-source" "1.6" "-target" "1.6")
add_jar(HelloWorld HelloWorld.java)
get_target_property(_jarFile HelloWorld JAR_FILE)
get_target_property(_classDir HelloWorld CLASSDIR)
message(STATUS "Jar file ${_jarFile}")
message(STATUS "Class compiled to ${_classDir}")
add_test(NAME TestHelloWorld COMMAND ${Java_JAVA_EXECUTABLE} -cp ${_jarFile} HelloWorld)
CMake变量CMAKE_JAVA_COMPILE_FLAGS
可用于指定编译标志。作为副作用,add_jar
命令将设置目标属性JAR_FILE
和CLASSDIR
,可以使用它们分别获取生成的jar文件的路径和已编译类文件的目录。
javac SomeJavaSourceFile.java
,这将生成.class
文件。然后运行它的命令是:java SomeJavaSourceFile
<-- 注意我省略了.class
部分。 - SnakeDoc