使用'classpath:'在Jython中从类路径加载资源

时间:2010-08-08 19:31:02

标签: classpath jython

我有一个相对较大的Java应用程序,可以从一些Python爱中受益。为此,我一直在努力让它在Jython中运行起来。我目前的障碍是让路径正确。

我采用了两种方法来设置类路径:

  1. 使用shell脚本,我已经建立了一个jar列表并执行java -cp ${CP} -jar jyton.jar,其中$ CP是我的应用程序所需的jar列表。这似乎不起作用。我无法从这些罐子中导入任何类,只能获得ImportError: No module named apache
  2. 使用bootstrap python脚本,我使用glob创建了一个路径列表,并使用[sys.path.append(path) for path in JAR_LIST]将它们附加到当前路径。这似乎工作正常;我现在可以从包含的罐子中导入我需要的任何类。
  3. 上面的内容有点令人困惑,因为我能找到的大多数信息已经转向使用$ CLASSPATH和-cp来添加你的jar,但是我无法让它工作。那么到目前为止的问题:在使用Jython时,#2是在类路径中添加依赖项的正确方法吗?

    我质疑我的方法的主要原因是因为我仍然在充分利用我的应用程序时遇到问题。我的应用中的许多地方都使用相对网址来尊重资源:classpath:some-critical-file.xml

    some-critical-file.xml和我的许多类都在同一个jar中。我可以从该jar导入类,但是任何尝试使用classpath:some-critical-file.xml加载我的xml都会导致java.io.FileNotFoundException

    有关为什么我的课程可用但有关使用classpath:的资源的相对路径的任何见解都不会非常感激。我现在处于亏损状态。

2 个答案:

答案 0 :(得分:0)

我最近遇到了一个小小的路径怪异。你有没有尝试过旧学校的方法:

  

CLASSPATH = $ {CLASSPATH}:your.jar

     

导出CLASSPATH

     

jython your_script.jy

答案 1 :(得分:0)

如果您使用java -jar调用独立jar,那么请从Java Documentation ...

  

-jar

     

使用此选项时, JAR文件是所有用户类的来源,其他用户类路径设置将被忽略。

因此,在使用-jar时无法向类路径添加任何内容。有关解决方案,请参阅this answer - 基本上将jython.jar添加到类路径(使用-cp或CLASSPATH)并直接运行org.python.util.jython类。