2010-11-18 112 views
1

我有一个问题关于运行jython相关的两个命令的差异。我遇到了类路径和db驱动程序的问题。Jython问题与类路径

我什么工作是做如下: Jython的-J-classpath中../lib/mysql-connector-java-5.1.7.jar test.py /家/测试/数据

运行的是命令一切按预期运行,所以我想结合我的脚本作为jar来运行,所以不需要jython。一旦我开始创建我的jar,一切都会运行,直到我需要驱动程序并返回驱动程序未找到的错误。

我运行此如下所示: java命令../lib/mysql-connector-java-5.1.7.jar mytest.jar test.py /家/测试/数据

我不知道我明白为什么一个人会工作,而另一个人不工作?

谢谢

回答

0

我得到它的工作,但我不知道它为什么工作。我希望有人能向我解释。我重建了我的mytest.jar jar并在构建jar时在mainifest中包含了所需的classpath,这似乎允许我在java中使用: java -cp mytest.jar test.py/home/test/data

为什么在mainfest而不是在命令行中包含类路径会产生不同的结果?

+0

当您通过Ant,beanshell,Jython或其他任何方式运行java程序时,在某些情况下,类会在自定义类加载器中加载,而不是“默认类加载器”。例如,启动一个beanshell脚本,然后在该脚本中动态加载jar导致.jar被加载到一个自定义类加载器中,并且需要使用Class.forname方法加载的类(如JDBC驱动程序)将因此在环境中遇到麻烦。只要你将东西加载到默认的类加载器中,你就不会有问题。 – djangofan 2012-01-12 21:19:12