maven - 从 Java 类路径加载 JRuby 脚本

我有一个简单的 Maven 项目,如下所示:

  • $PROJ/src/main/java/path-to-classes/InstallerLoader.java
  • $PROJ/src/main/resources/installer.rb

这是 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 - 故意在python中制作一个孤儿进程

python - 是否可以在 Pandas 中将 searchsorted 与 MultiIndex

c# - PDFSharp 使用 PdfTextField 作为位置和大小引用在 pdf 中插入图像

heroku - 如何在 Heroku bash 或 Heroku Scheduler 中实现 He

html5-video - HTML5 视频自动播放是否适用于三星智能电视?

hibernate - 带有关联表的 JPA 注解