我有一个简单的 Maven 项目,如下所示:
这是 InstallerLoader.java 的样子:
package com.mycompany;
import org.jruby.embed.ScriptingContainer;
import org.jruby.embed.PathType;
public class InstallerLoader {
public static void main(String[] args) {
System.out.println("Running..");
ScriptingContainer container = new ScriptingContainer();
container.runScriptlet(PathType.CLASSPATH, "/installer.rb");
}
}
这就是 installer.rb 的样子:
require 'optparse'
options = { :verbose => false}
optparse = OptionParser.new do |opts|
opts.on('-v', '--verbose', 'Verbose output') do
options[:verbose] = true
end
end
optparse.parse!
puts options[:verbose]
当我尝试运行它时,它似乎没有加载 installer.rb。没有堆栈跟踪或任何其他指示未加载 installer.rb 的信息。我在这里做错了什么?
最佳答案
类路径文件名不应以 /
开头。它应该只是:
container.runScriptlet(PathType.CLASSPATH, "installer.rb");
这是一个 quirky undocumented aspect Java 的 ClassLoader API(当然,ScriptingContainer 在幕后使用它从类路径加载文件)。
https://stackoverflow.com/questions/12977058/
相关文章:
php - DOMDocument::save[domdocument.save]:无法打开流:权限
nginx - 在 nginx 托管上出现 502 错误网关错误
python - Python 中的伪随机二进制序列 (prbs)
Django 模型 - 共享公共(public)基类的不同对象类型的外键
python - 是否可以在 Pandas 中将 searchsorted 与 MultiIndex
c# - PDFSharp 使用 PdfTextField 作为位置和大小引用在 pdf 中插入图像
heroku - 如何在 Heroku bash 或 Heroku Scheduler 中实现 He