【发布时间】:2015-09-15 09:37:58
【问题描述】:
我正在尝试使用 groovy 脚本执行 java .class 文件:
def sout = new StringBuffer(), serr = new StringBuffer()
def proc = "java ${fileName}".execute()
proc.consumeProcessOutput(sout, serr)
proc.waitFor()
println "out> $sout err> $serr"
它给出错误:err> Error: Could not find or load main class cle47d1d78d99a44a8ba01f0bc7612ad16(使用 uuid 生成的类名)。但是当我在 bash 中执行它时,它会给出正确的输出。我检查了文件名、密码并确保 .class 文件存在于 groovy 尝试执行命令的文件夹中。
我能够运行其他命令并成功编译 .java 文件:
def proc = "javac ${file.path}".execute()
请提出建议。
【问题讨论】:
-
你是如何编译java文件的?你有没有声明任何执行代码的主要方法
-
分叉JVM(运行单独的java程序)有什么特殊原因吗?在初始类路径中加载java类或使用URLClassLoader加载它会快得多(然后使用反射运行main方法)
-
@DanyalSandeelo 我通过 groovy 使用 javac 命令编译了 .java 文件,然后我尝试执行它。
-
@Benoît 我正在尝试自动化评估 Java 代码的过程。