Java 如何在任何地方使用groovy脚本?
我的简单Groovy项目包含两个类。 我将包含路径添加到path变量中 ExampleClass.groovyJava 如何在任何地方使用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
#!/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
您的类路径正确吗?我无法执行此操作-->请参阅补充内容非常感谢您的详细解释!