从JAR加载Groovy配置文件时出错
我有一个在jar中编译的Groovy代码上运行的应用程序 groovy代码正在正确加载/执行,但是,我有一个步骤尝试从JAR的根目录加载groovy配置文件,但失败了 下面的代码来自从JAR运行的groovy类,在这里,它试图从JAR的根目录加载groovy配置文件从JAR加载Groovy配置文件时出错,groovy,jar,Groovy,Jar,我有一个在jar中编译的Groovy代码上运行的应用程序 groovy代码正在正确加载/执行,但是,我有一个步骤尝试从JAR的根目录加载groovy配置文件,但失败了 下面的代码来自从JAR运行的groovy类,在这里,它试图从JAR的根目录加载groovy配置文件config.props: URL url = this.getClass().getClassLoader().getResource("config.props") logger.info( url.toString() ) if
config.props
:
URL url = this.getClass().getClassLoader().getResource("config.props")
logger.info( url.toString() )
if(!url)throw new IllegalArgumentException("'$resource' not found ")
GroovyScriptEngine gse = new GroovyScriptEngine( url )
...
gse.run(url.file, binding)
当我运行上述命令时,会出现以下错误:
Message: Cannot open URL: jar:file:/usr/local/libs/test-all.jar!/config.props
有人知道如何从jar的根加载文件吗?我已临时将权限设置为777,并已检查该文件是否存在/拼写是否正确。好-我想我已解决此问题 看起来错误就在这里
gse.run(url.file, binding)
url.file
向gse传递了完整的绝对路径,包括file:
协议-我将此更改为“config.props
”,它似乎已经解决了这个问题(现在有另一个错误,但似乎还需要进一步解决)。好的-我想我已经解决了这个问题
看起来错误就在这里
gse.run(url.file, binding)
url.file
向gse传递了完整的绝对路径,包括file:
协议-我将其更改为“config.props
”,它似乎已经超越了这个限制(现在有另一个错误,但似乎更进一步)。您已经尝试了绝对路径(带前导斜杠)是吗this.getClass().getClassLoader().getResource(“/config.props”)
如果是这样的话,我的第二个猜测是将jar解包到某个地方,并检查config.props
文件是否在您认为的位置is@tim_yates-谢谢,是的,我试过这个。实际上,错误消息是它无法打开URL。如果我在第一行中传入一个垃圾名称,那么我会得到一个不同的错误(我会得到一个错误,说文件不存在)。所以问题似乎不是它找不到文件。你已经尝试了绝对路径(带前导斜杠)是吗this.getClass().getClassLoader().getResource(“/config.props”)
如果是这样的话,我的第二个猜测是将jar解包到某个地方,并检查config.props
文件是否在您认为的位置is@tim_yates-谢谢,是的,我试过这个。实际上,错误消息是它无法打开URL。如果我在第一行中传入一个垃圾名称,那么我会得到一个不同的错误(我会得到一个错误,说文件不存在)。所以问题似乎不是它找不到文件。谢谢你的提问和回答——我遇到了完全相同的问题。我用“url.file.text”来获取文本,结果我需要的是“url.text”。你或许应该接受你的答案。谢谢你的提问和回答——我也有同样的问题。我用“url.file.text”来获取文本,结果我需要的是“url.text”。你或许应该接受你的答案。