Tag: classpath

Java -classpath选项

将-classpath选项与java ,添加或替换CLASSPATH env变量的内容?

从命令行运行时将jar添加到类路径

好的,我知道这个问题之前已被问了很多次,但是我用谷歌搜索了一下,看了几个例子,看了过去一个月的问题,我真的不能让这个问题起作用。 我认为问题是我希望能够从Eclipse和命令行运行该程序。 我也在使用OSX,我认为我正在阅读的很多例子都是针对Windows / Linux的。 如果我有一个在Eclipse中编译的简单程序,我想从命令行运行,我这样做: java -cp bin MyProgram 我有另一个我在Eclipse中编译和运行的程序,它引用了存储在同一目录中的MySQL JDBC连接器(mysql-connector-java-5.1.19-bin.jar)。 这在Eclipse中运行良好,但我无法从命令行运行它。 我尝试了所有的组合…… java -classpath “bin;mysql-connector-java-5.1.19-bin.jar” MyProgram java -cp bin\;mysql-connector-java-5.1.19-bin.jar MyProgram 并得到各种类未找到的错误… Exception in thread “main” java.lang.NoClassDefFoundError: MyProgram Caused by: java.lang.ClassNotFoundException: MyProgram at java.net.URLClassLoader$1.run(URLClassLoader.java:202) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:190) at java.lang.ClassLoader.loadClass(ClassLoader.java:306) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:247)

如何在执行java.io.File或FileInputStream时引用OSGi包中的包含文件

我正在使用aQute Bnd工具集来创建一个OSGi包,并打包了一些相关的“资源”文件。 这包括我创建的资源目录中的* .css文件和* .xsd文件。 我在bundle.bnd文件中包含以下内容: Include-Resource: resources/=resources/ 当我进行构建时,生成的* .jar文件在jar包文件的顶级目录的resources目录中包含* .css和* .xsd文件。 但是,在实际代码中,我很难尝试将其作为类路径的一部分引用: 我尝试过以下方法: new File(“resources/example.css”); 我也尝试过: URL cssFile = this.getClass().getResource(“resources/example.css”); try { file = new File(cssFile.toURI())); } catch(Exception e) { e.printStackTrace(); } 我得到一个NullPointException错误或无法找到文件IOException错误(取决于我使用的是哪一个)。 我在调试配置模式下运行Eclipse Equinox以及Apache Felix(我们用于部署)时遇到此错误。 注意我试图在BundleActivator之外的Java类中执行此操作。 我是否需要始终参考BundleActivator的上下文,例如? /* * (non-Javadoc) * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext) */ @Override public void start(BundleContext context) throws Exception { /* […]

不属于classpath的dependecies的测试资源?

我有一个使用Maven设置的多模块Spring项目: my-root (pom) – my-logic – my-webapp (depending on my-logic) – my-consoleapp (depending on my-logic) 我的Test类inheritance自AbstractTransactionalJUnit4SpringContextTests并使用@ContextCofiguration来设置ApplicationContext 。 例如Spring Controller的测试类: @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(locations = { “classpath:applicationContext-logic-test.xml”, “classpath:applicationContext-web-test.xml”}) public class ControllerTest extends AbstractTransactionalJUnit4SpringContextTests { @Autowired private ApplicationContext applicationContext; … } 如您所见,每个模块都有一个配置XML。 我有单独的配置进行测试,驻留在每个模块的测试/资源中(另外还有后缀“-test”)。 如果我在Eclipse中运行JUnit测试,这一切都有效(类编译,运行和JUnit测试成功)。 现在我的问题: 使用Maven运行测试将无法正常工作! (例如在my-root上使用“Run As”>“Maven install”(我使用m2eclipse))。 具体来说,它将抛出以下exception: java.io.FileNotFoundException:类路径资源[applicationContext-logic-test.xml]无法打开,因为它不存在 似乎Maven没有将my-logic/src/test/resources的文件添加到运行my-webapp的unit testing时设置的类路径中。 我该如何解决这个问题?

如何在类路径中放置javaagent的类

我正在尝试开发一个javaagent,它可以在asm-4的帮助下编写代码。 现在我遇到了一个非常基本的问题,javaagent的类加载器没有看到asm依赖,因此失败了。 我是否必须提供一个jar-with-dependencies(又名maven build plugin),其中包含代理程序所需的所有类,或者是否有另一种方法将类添加到java代理程序中? 直接在类路径中引用jar asm-all.jar没有帮助。 构建jar-with-dependencies最初没有帮助,因为无法使用程序集插件设置Premain-Class属性。 感谢帮助;-)

Ant + JUnit:NoClassDefFoundError

好的,我很沮丧! 我已经狩猎了好几个小时,我仍然难过。 环境:WinXP,Eclipse Galileo 3.5(直接安装 – 无需额外插件)。 所以,我有一个简单的JUnit测试。 它从内部Eclipse JUnit运行配置运行良好。 这个类没有依赖任何东西。 要尽可能缩小此问题,它只包含: @Test public void testX() { assertEquals(“1”, new Integer(1).toString()); } 到目前为止没有汗水。 现在我想采取从Ant内部运行此测试用例的超级高级步骤(最终目标是与Hudson集成)。 所以,我创建了一个build.xml: $ {basedir}是工作空间中包含源,类和构建文件的Java项目名称。 所有.java和build.xml都在$ {basedir} / src中。 .class文件位于$ {basedir} / bin中。 我已经通过Windows / Preferences / Ant / Runtime / Contributed Entries将eclipse-install-dir / plugins / org.junit4_4.5.0.v20090423 / junit.jar添加到Ant运行时类路径中。 ant-junit.jar在Ant Home Entries中。 那么,当我运行这个疯狂复杂的目标时会发生什么? 我的报告文件包含: […]

Spring XML中“classpath:”和“classpath:/”有什么区别?

我正在处理一些Spring XML配置文件,有时他们使用”classpath:/datasource.xml” ,有时使用”classpath:datasource.xml” 。 两者之间是否存在差异,或者是前导/可选/隐含/冗余?

Ant无法找到外部定义的taskdef所需的类

我正在尝试使用axis-java2wsdl ant任务从我的一个java类创建一个wsdl,但我无法使类路径正确。 我正在使用Ubuntu的libaxis-java软件包,它在$ ANT_HOME / lib中安装axis-ant.jar,在/ usr / share / java中安装axis.jar。 我的build.xml的有趣部分如下所示: details omitted 运行ant genwsdl导致: /build.xml:50: taskdef A class needed by class org.apache.axis.tools.ant.wsdl.Wsdl2javaAntTask cannot be found: org/apache/axis/utils/DefaultAuthenticator Ant能够找到axis-java2wsdl任务的定义,因为axis-ant.jar位于$ ANT_HOME / lib中,但它无法在axis.jar中找到类,即使该jar位于“libraries”定义的路径上 我知道这是一个类路径问题,因为我能够通过符号链接axis.jar到$ ANT_HOME / lib中找不到其他类的DefaultAuthenticator。 如何让taskdef识别/ usr / share / lib或我项目的本地lib目录中的jar文件,而无需将所有内容符号链接到$ ANT_HOME / lib中? 编辑: 我终于能够用这一行成功生成wsdl: ant -lib /usr/share/java/axis.jar -lib /usr/share/java/jaxrpc.jar -lib /usr/share/java/wsdl4j.jar -lib […]

GWT,Eclipse插件如何将项目与.gwt.xml文件一起重命名? 尝试这样做时会出错

我花了一段时间在这上面搜索,我发现的任何内容似乎都与我的问题无关。 我正在进行RPC调用,所以我想改变我的一个Web服务的路径。 它就像mytestproject并希望将其更改为finalprojectname 我转到mytestproject.gwt.xml文件并将更改为 然后我运行它并得到一个错误, [ERROR] Unable to find ‘org/ediscovery/gwt/mytestproject.gwt.xml’ on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source? [ERROR] Unable to find ‘org/ediscovery/gwt/mytestproject.gwt.xml’ on your classpath; could be a typo, or maybe you forgot to include a classpath entry for source? 然后我将mytestproject.gwt.xml更改为finalprojectname.gwt.xml但仍然得到了相同的结果。 我查看了每个可能的文件,但无法找到为什么它认为该项目仍然命名为mytestproject 。 我已经清理并重建了项目等,但仍然是一样的。 […]

Jar hell:如何在运行时使用类加载器将一个jar库版本替换为另一个jar库版本

我还是比较新的Java,所以请耐心等待。 我的问题是我的Java应用程序依赖于两个库。 让我们称它们为库1和库2.这两个库共享对库3的相互依赖。但是: 库1完全需要库3的版本1。 库2完全要求库3的版本2。 这正是JAR地狱的定义(或者至少是其中的一个变体)。 如链接中所述,我无法在同一个类加载器中加载第三个库的两个版本。 因此,我一直试图弄清楚是否可以在应用程序中创建一个新的类加载器来解决这个问题。 我一直在研究URLClassLoader ,但我无法弄明白。 这是一个演示问题的示例应用程序结构。 应用程序的Main类(Main.java)尝试实例化Library1和Library2,并运行在这些库中定义的一些方法: Main.java(原始版本,在尝试解决方案之前): public class Main { public static void main(String[] args) { Library1 lib1 = new Library1(); lib1.foo(); Library2 lib2 = new Library2(); lib2.bar(); } } Library1和Library2都共享对Library3的相互依赖,但是Library1只需要版本1,而Library2只需要版本2.在这个例子中,这两个库只打印他们看到的Library3版本: Library1.java: public class Library1 { public void foo() { Library3 lib3 = new Library3(); lib3.printVersion(); // Should […]