我有一个应用程序,它包含一些Java类和一些Python脚本;我使用Java代码中的Jython来调用Python脚本。
我的应用程序是使用Maven构建的,并生成一个普通的.jar
文件,其中包含已编译的Java类,以及Python脚本作为资源。我还使用maven-assembly-plugin
生成myapp-with-dependencies.jar
,其中包含Jython依赖项内容中相同的plus包。
当我使用with-dependencies jar运行我的应用程序时:
java -classpath target/myapp-1.0.0-SNAPSHOT-jar-with-dependencies.jar com.example.myapp.Main
......它按预期工作。但是,当我使用两个独立的罐子运行它时:
java -classpath "target/myapp-1.0.0-SNAPSHOT.jar:/Users/richard/.m2/repository/org/python/jython-standalone/2.5.3/jython-standalone-2.5.3.jar" com.example.myapp.Main
...它失败了:当我要求Jython执行“import mylib”时,我得到一个例外:
ImportError: No module named mylib
在这两种情况下,类路径的确切内容应该完全相同,唯一的区别是在第一种情况下,一切都在一个罐子里,但在第二种情况下,它被分成两个罐子。
可能导致此行为的原因是什么?