Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在任何地方使用groovy脚本?_Java_Groovy_Command Line - Fatal编程技术网

Java 如何在任何地方使用groovy脚本?

Java 如何在任何地方使用groovy脚本?,java,groovy,command-line,Java,Groovy,Command Line,我的简单Groovy项目包含两个类。 我将包含路径添加到path变量中 ExampleClass.groovy #!/usr/bin/env groovy class ExampleClass { static void main(String[] args) { UtilClass util = new UtilClass() util.testPrint("Success!") } } class UtilClass { vo

我的简单Groovy项目包含两个类。 我将包含路径添加到path变量中

ExampleClass.groovy

#!/usr/bin/env groovy

class ExampleClass {

    static void main(String[] args) {
        UtilClass util = new UtilClass()
        util.testPrint("Success!")
    }

}

class UtilClass {

    void testPrint(String text) {
        println(text)
    }

}
UtilClass.groovy

#!/usr/bin/env groovy

class ExampleClass {

    static void main(String[] args) {
        UtilClass util = new UtilClass()
        util.testPrint("Success!")
    }

}

class UtilClass {

    void testPrint(String text) {
        println(text)
    }

}
当我在包含目录中运行“ExampleClass.groovy”时,一切都很好。 .但当我在别处运行“ExampleClass.groovy”时,我得到了以下结果:

org.codehaus.groovy.control.multipleCompationerErrorSexception: 启动失败: C:\Users\buehlmannt\IdeaProjects\MessageKeyRefactoring\src\ExampleClass.groovy: 6:无法解析第6行第19列的类UtilClass。 UtilClass util=新的UtilClass() ^

C:\Users\buehlmannt\IdeaProjects\MessageKeyRefactoring\src\ExampleClass.groovy: 6:无法解析第6行第26列的类UtilClass。 UtilClass util=新的UtilClass() ^

2个错误

我尝试将UtilClass添加到类路径中。但是我无法调用“this.class.classLoader.rootLoader.addURL(新URL(“./”)”),因为rootLoader返回一个没有addURL方法的classLoader对象。 -->


正确执行此操作的最佳方法是什么?

两个类都需要位于类路径中。有很多方法可以实现这一点

使用单个.groovy文件 与Java不同,您可以将多个Groovy类放在一个文件中:

ExampleClass.groovy

#!/usr/bin/env groovy

class ExampleClass {

    static void main(String[] args) {
        UtilClass util = new UtilClass()
        util.testPrint("Success!")
    }

}

class UtilClass {

    void testPrint(String text) {
        println(text)
    }

}
就这样。我只会工作。注意:类在文件中列出的顺序并不重要

添加类路径

这一个稍微复杂一点,而且相当脆弱,因为您必须考虑类在文件系统上的位置:

#!/usr/bin/env groovy -cp $WHEREEVER_THE_CLASSES_ARE_LOCATED

class ExampleClass {

    static void main(String[] args) {
        UtilClass util = new UtilClass()
        util.testPrint("Success!")
    }

}
打包到一个.jar中
更复杂的方法是使用groovyc编译类,并将编译后的.class文件打包成.jar文件。(我知道我已经这样做了,但不幸的是找不到代码)。最后,您可以像这样执行应用程序:
java-jar example.jar

您的类路径正确吗?我无法执行此操作-->请参阅补充内容非常感谢您的详细解释!