【问题标题】:Execute Java class using groovy code使用 groovy 代码执行 Java 类
【发布时间】: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 代码的过程。

标签: java grails groovy


【解决方案1】:

${fileName} 的值是多少。我认为它包含像 "ABC.java" 这样的值。你必须在哪里使用命令“java ${className}”。

Use:

java ${className}

ex:
If com.abc.ABC is the class containing the main function
java com.abc.ABC 

包也是必须的

【讨论】:

  • 你能分享你正在尝试执行的课程吗
猜你喜欢
  • 2011-03-06
  • 1970-01-01
  • 2014-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多