Tag: classpath

我是否需要客户端,服务器和注册表上的所有类才能使用RMI?

我正在用RMI做我的第一步,我有一个简单的问题。 我有一个.jar文件,它有一个库中的几个方法的实现。 我想使用RMI在.jar文件中调用此方法。 我正在尝试创建一种包装来做它。 所以,我正在做这样的事情: 接口类 :此接口具有远程对象要实现的方法。 实现类 :这个类,具有接口方法的实现,每个实现调用.jar文件中的相应方法。 例如,jar文件有一个名为getDetails()的方法,它返回一个“ResponseDetail”对象。 ResponseDetail是我在.jar中的响应类。 服务器类 :它将方法绑定到rmiregistry 客户端类 :它将使用实现中实现的方法。 到现在为止还挺好? 🙂 现在,我有一个lib文件夹,其中包含.jar文件。 在服务器机器中,我已经部署了Interface,Implementation和Server类。 我已经生成了存根,并成功运行了rmiregistry,但是,有了这些细节: 要启动rmiregistry,我必须在命令行中设置类路径以引用.jar文件,否则我得到java.lang.NoClassDefFoundError。 我用这个.sh文件做到了: THE_CLASSPATH= for i in `ls ./lib/*.jar` do THE_CLASSPATH=${THE_CLASSPATH}:${i} done rmiregistry -J-classpath -J”.:${THE_CLASSPATH}” 要启动服务器,我还必须设置类路径以引用.jar文件,否则,我得到java.lang.NoClassDefFoundError。 我用过这样的东西: THE_CLASSPATH= for i in `ls ./lib/*.jar` do THE_CLASSPATH=${THE_CLASSPATH}:${i} done java -classpath “.:${THE_CLASSPATH}” Server 客户端机器:要从客户端机器运行Client.class文件,我必须将.jar文件复制到它,并在类路径中引用它们,否则,它不会运行,我得到java.lang。 NoClassDefFoundError错误。 我不得不在客户端机器上使用它: THE_CLASSPATH= for i […]

Java类查找器工具

任何经常使用Java的人都知道classpath中的多个jar可以给我们带来的麻烦。 我正在寻找一个可以帮助我的工具 – 在Classpath中搜索jar中的类文件 在特定位置的 jar中搜索类文件 也许要求太多,但如果同一个class级出现在多个jar子中,请告诉我。 也不用说它应该很快。 我评估的大多数工具都非常慢,并没有达到标准。 任何用于上述目的的工具都非常感谢。 目前我使用WinRar实现搜索(BTW非常快)来搜索特定位置的jar内的类文件。 但是没有办法利用它在Classpath中搜索。

帮助ant文件 – Java任务的类路径

我有下面的Ant构建文件,并尝试使用目标’run’来执行程序。 使用相同的classpathref,我能够成功编译和创建jar,但是当使用目标运行时,我得到以下错误 java.lang.NoClassDefFoundError: org/springframework/core/io/Resource Caused by: java.lang.ClassNotFoundException: org.springframework.core.io.Resource at java.net.URLClassLoader$1.run(URLClassLoader.java:200) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:188) at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:289) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320) 线程“main”中的exception 任何帮助是极大的赞赏。 谢谢

不通过执行Java Applikation在ARM上加载JDBC库

好的我们在带有外部Sqlite驱动程序库的unix主目录中有一个Java应用程序“app.jar”。 – myapp/app.jar – myapp/lib/sqlite-jdbc-3.8.7.jar 设备Udoo ARM Cortex V9与Raspberry Pi相似。 java -version java version “1.8.0_06 Java(TM) SE Runtime Environment (build 1.8.0_06-b23) Java HotSpot(TM) Client VM (build 25.6-b23, mixed mode) 尝试运行此应用程序失败。 java -classpath lib/sqlite-jdbc-3.8.7.jar -jar myapp.jar 似乎应用程序找不到库。 java.lang.Exception: No native library is found for os.name=Linux and os.arch=arm at org.sqlite.SQLiteJDBCLoader.loadSQLiteNativeLibrary(SQLiteJDBCLoader.java:284) at org.sqlite.SQLiteJDBCLoader.initialize(SQLiteJDBCLoader.java:65) 直到现在我都找不到解决方案。 可以将.jar文件复制到jdk / lib文件夹吗? 编辑: […]

在CLASSPATH中使用未使用的JAR文件的影响

我在这里阅读了很多关于可用于查找未使用的 JAR的工具的问答,例如: loosejar Classpath Helper 我的问题是,在编译时或运行时在类路径中有未使用的JAR是否有任何影响(例如将类加载到内存,性能等)? 问题适用于作为独立程序运行和Web服务器(Apache Tomcat),尽管我最初只考虑独立程序。 注意:我正在运行JDK 6u32(64位)。

在ant中设置类路径的问题

我在运行Java程序时遇到了问题(它使用了一些第三方JAR)。 我可以编译它很好但是当我在ant中调用我的运行目标时它说它找不到我告诉它在类路径中运行的类。 这是我的build.xml的样子: 有谁知道我可能做错了什么? 这是我从ant的堆栈跟踪: ant run Buildfile: build.xml run: [java] Could not find GuiStarter. Make sure you have it in your classpath [java] at org.apache.tools.ant.taskdefs.ExecuteJava.execute(ExecuteJava.java:138) [java] at org.apache.tools.ant.taskdefs.Java.run(Java.java:764) [java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:218) [java] at org.apache.tools.ant.taskdefs.Java.executeJava(Java.java:132) [java] at org.apache.tools.ant.taskdefs.Java.execute(Java.java:105) [java] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:288) [java] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [java] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [java] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [java] at java.lang.reflect.Method.invoke(Method.java:616) [java] […]

当JUnit类有多个导入时,如何从Windows CMD窗口运行JUnit测试?

这是我的JUnit测试类:package com.bynarystudio.tests.storefront; import java.util.List; import org.junit.Assert; import org.junit.Test; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import com.bynarystudio.tests.BaseWebTest; public class SmokeTests extends BaseWebTest { @Test public void StoreFrontMegaNavTest(){ webDriver.get(default_homepage); String source = webDriver.getPageSource(); Assert.assertTrue(source.contains(“some text”)); } } 如何从命令行运行此测试? 当我尝试使用时从其目录中运行它 java -cp junit.textui.TestRunner SmokeTests.java 我收到以下错误 Could not find the main class: SmokeTests.java. Program will exit. 我认为这与我的类路径设置不正确这一事实有关。 但我不知道因为我是Java的新手。 来自.NET,C#和Visual Studio,整个类路径事情毫无意义。 即使我已将所有文件正确添加到Eclipse中的项目中(我知道因为Eclipse内部的测试运行良好),它绝对不会从命令行运行或编译。

如何让Ant在javac中使用JAXB 2.2.x而不是Java 6 SE JAXB类?

我正在更新遗留应用程序以使用Java 6 SE而不是Java 5 SE。 该应用程序使用JAXB,在Java 5 SE下,它在类路径上有JAXB参考实现jar。 当我转到Java 6 SE(更新38)时,我遇到了一些问题 (参见链接的Stackoverflow问题 ),我在一些帮助下解决了这个问题 。 因此,导致问题的下一件事是项目Ant构建脚本。 当Ant编译任务执行时,它会获取Java 6 SE附带的JAXB的嵌入式版本,而不是我在类路径中包含的jar版本(JAXB 2.2.6版本)。 我相信Java 6 SE包含JAXB 2.1.x. 这导致编译时错误,如下所示: [javac] location: @interface javax.xml.bind.annotation.XmlElementRef [javac] @XmlElementRef(name = “abbrev”, type = JAXBElement.class, required = false) 在这种情况下,JAXB 2.1.x中的@XmlElementRef不存在’required’属性,但它在2.2.x中存在。 如何更改我的Ant构建脚本,以便从构建类路径中获取JAXB 2.2.6 jar而不是Java 6 SE JDK中包含的类? 更新:解决方案基于彼得的答案

Java SPI – ServiceLoader – 将多个JAR添加到APP类路径

我在项目中实现此逻辑时遇到问题。 我使用ServiceLoader,我不知道,或者它是否可能,但我想动态地将JAR添加到app的某个已知目录,因此应用程序可以在启动时加载它们。 我唯一获得的是我知道如何创建可扩展的ONE JAR(使用META-INF / services),因此我可以为此JAR添加越来越多的提供者和类(实现)。 JAR包含在类路径中,就像普通的库一样,所以app知道它。 我想要实现的目标:我不想扩展一个jar文件,但我希望通过添加更多的jar来扩展app,例如插件与提供者(服务),但我不知道如何。 感谢帮助!

在tomcat类路径中包含web-inf / lib中的目录

在我的webapp中; 默认情况下,在classpath中添加了WEB-INF / lib,这很好。 现在,我想在我的tomcat的类路径中添加spring jar文件。 如果我将所有jar文件放在WEB-INF / lib中; 它工作正常。 但是,如果我想添加一个目录WEB-INF / lib / spring并将所有jar文件放在spring目录中; 它不起作用。 如何在类路径中包含WEB-INF / lib / spring。 我更愿意在web.xml中进行更改,因为它非常本地化为我的webapp。 当然我不想在catalina.properties中进行更改,因为所有jar文件都加载到JVM中(不仅仅是在类路径中添加)