【问题标题】:Loading resources off the classpath in Jython using 'classpath:'使用“类路径:”从 Jython 中的类路径加载资源
【发布时间】:2011-03-27 00:46:09
【问题描述】:

我有一个相对较大的 Java 应用程序,它会从对 Python 的热爱中受益。为此,我一直致力于在 Jython 中启动和运行它。我当前的障碍是正确设置类路径。

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

  1. 使用 shell 脚本,我建立了一个 jar 列表并执行 java -cp ${CP} -jar jyton.jar 其中 $CP 是我的应用程序所需的 jar 列表。这似乎不起作用。我无法从这些 jar 中导入任何类,只能得到 ImportError: No module named apache
  2. 使用引导 python 脚本,我使用 glob 创建了一个路径列表,并使用 [sys.path.append(path) for path in JAR_LIST] 将它们附加到当前路径。这似乎工作正常;我现在可以从包含的 jar 中导入我需要的任何类。

以上内容有点令人困惑,因为我能找到的大多数信息都倾向于使用 $CLASSPATH 和 -cp 来添加你的 jar,但我无法让它工作。所以到目前为止的问题:#2 是在使用 Jython 时向类路径添加依赖项的正确方法吗?

我质疑我的方法的主要原因是我仍然无法充分利用我的应用程序。我的应用程序中的许多地方都使用相对 URL 来尊重资源:classpath:some-critical-file.xml

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

任何关于为什么我的课程可用但使用classpath: 的资源的相对路径的任何见解都将不胜感激。在这一点上,我不知所措。

【问题讨论】:

  • 如何打开像“classpath:file.xml”这样的路径?

标签: classpath jython


【解决方案1】:

我最近自己也遇到了一些类路径怪事。您是否尝试过以下老式方法:

CLASSPATH = ${CLASSPATH}:your.jar

导出类路径

jython your_script.jy

【讨论】:

    【解决方案2】:

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

    -罐子

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 2020-09-02
      • 1970-01-01
      • 2010-12-29
      相关资源
      最近更新 更多