Tag: classpath

我可以使用类路径覆盖正在运行的jar中的文件吗?

我有一个JAR文件,其中包含应用程序以及该应用程序的配置文件。 应用程序从类路径加载配置文件(使用ClassLoader.getResource() ),并使用烘焙到JAR文件中的配置文件完全满足其依赖关系。 有时我希望应用程序以稍微不同的配置运行(特别是我想覆盖JDBC URL以指向不同的数据库)所以我创建了一个新的配置文件,将其存储在正确的目录结构中(这意味着在classpath条目的目录/config ),我想做这样的事情: java -cp new-config:. -jar application.jar 但我无法让类路径在应用程序JAR的内容之前获得new-config路径条目。 是否硬编码JAR的内容始终是类路径中的第一件事?

从类路径加载配置文件

我正在努力使我的Java应用程序易于部署到其他计算机,我正在编写一个ant脚本来做到这一点,这很好。 我在加载jar的清单文件中指定的类路径中列出的资源时遇到问题。 文件夹结构如下所示: /MyProgram.jar /lib/ /config/configuration.xml 我不能为我的生活使用ClassLoader访问configuration.xml文件。 它与所有依赖项一起在清单文件的Class-Path条目中明确列出。 我尝试了以下的许多变种: this.xml = Thread.currentThread().getContextClassLoader() .getResourceAsStream(xmlName); this.xml = this.getClass().getResourceAsStream(xmlName); 使用xmlName作为以下所有值的字符串: “config/configuration.xml” “configuration.xml” “config.configuration.xml” 与此相关,我在config目录中也有一个log4j.properties文件。 我如何让log4j拿起它? 其他引用说它只需要在类路径中,它也在jar的manifest文件中明确命名。 有人能指出我正确的方向吗? 更新: 以下是Class-Path中的实际条目: Class-Path: config/configuration.xml config/log4j.properties

如何在Java中配置.dll文件?

我在我的java应用程序中使用Jacob jar文件。 这个Jacob jar文件附带一个.dll文件。 我已将Jacob jar文件添加到我的类路径中。 但是当我执行我的应用程序时,会发生运行时错误 “couldn’t load jacob-1.15-M3-x86.dll file” 我怎么能加载这个.dll文件? 编辑:================================================ ================================= 我已将“路径”环境设置为包含我的.dll文件的dir并加载该.dll文件,如下所示 static { System.loadLibrary(“jacob-1.15-M3-x86.dll”); } 但发生以下错误 java.lang.UnsatisfiedLinkError: no jacob-1.15-M3-x86.dll in java.library.path at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1734) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1028) at TemplateClass.TemplateClass.(TemplateClass.java:14)

执行JAR时java.lang.ClassNotFoundException:com.mysql.jdbc.Driver

我试图使用以下代码连接到我的本地MySQL服务器: dbURL = “jdbc:mysql://localhost:3306:/” + dbname; try{ Class.forName(“com.mysql.jdbc.Driver”); try{ con = DriverManager.getConnection(dbURL, dbuser, dbpass); } catch (SQLException ex){ System.out.println(“ERROR: Could not connection to SQL DB”); con = null; } } catch (ClassNotFoundException e){ System.out.println(“Error: “); e.printStackTrace(); } 然后我明白了 java.lang.ClassNotFoundException:com.mysql.jdbc.Driver 我知道Java无法找到将Java环境连接到MySQL数据库的正确驱动程序。 这是在Windows 7系统上编译并移植到Ubuntu 11.04系统。 有没有一种特殊的方法可以使用特定的类路径运行Java程序,例如: java -cp /usr/share/java/mysql-connector-java.jar program.jar 当我尝试它时,这不起作用。

如何在尝试运行LWJGL“Hello World”时解决此JNI错误?

我正在尝试从LWJGL网站运行示例“Hello World” 从这个链接: LWJGL“入门” 我试图通过命令行来做到这一点,所以我理解“幕后”更好一点。 我已经设法编译没有任何错误,但当我尝试运行该程序时,我收到此错误: C:\JavaProjects\LearningLWJGL>java -classpath .;./lib/*.jar -Djava.library.path=C:\Windows\System32 HelloWorld Error: A JNI error has occurred, please check your installation and try again Exception in thread “main” java.lang.NoClassDefFoundError: org/lwjgl/glfw/GLFWKeyCallback at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.privateGetMethodRecursive(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) at sun.launcher.LauncherHelper.validateMainClass(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Caused by: java.lang.ClassNotFoundException: org.lwjgl.glfw.GLFWKeyCallback […]

Java -jar:访问外部配置文件

我正在寻找一些我认为不会有困难的事情。 我有一个应用程序,我想打包成jar,因为我有~30个依赖项,我希望能够部署一个文件。 我有一些配置文件 – 属性文件和弹簧配置文件,以及我的log4道具文件 – 我想在jar外部。 我想我希望如果我将它们放在与jar相同的目录中,它会在运行时找到它们,但事实并非如此。 在开发的过程中,我将这些文件放在我的eclipse项目的类路径的根目录下,应用程序发现它们就好了。 我觉得我错过了jar / classpath理论的一些关键方面…… 所以我想要的是能够将配置文件和jar放在同一目录中,并让我的应用程序找到配置文件时,我用标准的java -jar运行它。 有没有一种简单的方法来实现这一目标?

Java / Eclipse:如何为JUnit测试配置Run Configuration的Classpath?

我有一个具有以下目录结构的Eclipse项目: MyProj/ src/main/java/ com.me.myproject.widgets Widget.java src/main/config widget-config.xml src/test/java com.me.myproject.widgets WidgetTest.java src/test/config widget-test-config.xml Widget类从类路径的任何位置读取其配置(XML)文件,并使用它来配置其属性。 我试图让WidgetTest的测试用例(全部用JUnit编写)在Eclipse中运行,当我右键单击该文件并转到Run As >> JUnit Test 。 我假设我必须将其作为具有自己配置的类路径的自定义运行配置实际运行,但我不确定,因为我以前从未这样做过。 有没有人知道我如何获得自定义运行配置来运行WidgetTest.java作为JUnit测试,并成功将src/test/config/widget-test-config.xml放在类路径上? 提前致谢! 请注意,这个问题不是关于如何从运行时类路径中读取资源, 而是关于如何在Eclipse的JUnit Run Config类路径中首先获取它!

如何以编程方式调用Maven任务

我在另一个构建工具(leiningen for Clojure,但这应该无关紧要)的上下文中使用Maven,我想知道如何调用依赖的插件:build-classpath以编程方式(即通过Maven- API,而不是通过mvn -command)。

CLASSPATH中的空格

我正在使用Windows PC并在其上安装了cygwin! 我已将所有jar子组织在几个目录中的目录下! 我正在编写一个bash脚本来通过迭代作为参数传递的目录来设置CLASSPATH ,如下所示: for JAR_FILE in `ls *.jar` do CLASSPATH=”$DIRECTORY_TO_LOOK_FOR_JARS”/$JAR_FILE:$CLASSPATH done 每当传递目录中的空格如/cygdrive/c/Documents and Settings/user/My Jars并运行java -cp $CLASSPATH somepackage.someclass ,它会抛出一个错误,指出该类and没有找到,因为在/cygdrive/c/Documents之后,CLASSPATH变量会被拆分。 有人可以帮我解决这个问题吗?

Ubuntu:将路径从OpenJDK 6更改为Oracle JDK 7

下载最新的.tar文件后,我运行tar zxvf jdk-7u45-linux-x64.tar.gz来提取java文件。 在.bashrc文件( vi ~/.bashrc )中设置路径如下; export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_45/bin/java export PATH=$PATH:/usr/lib/jvm/jdk1.7.0_45/bin export JDK_HOME=/usr/lib/jvm/jdk1.7.0_45 export JRE_HOME=/usr/lib/jvm/jre1.7.0_45 现在,运行命令java -version或者java,java PATH仍然指向较旧的java版本( java version “1.6.0_27” )。 我知道默认的ubuntu采用OpenJDK路径。 我必须将路径更改为.bashrc文件中设置的系统环境变量的最新版本。 另外, sudo update-alternatives –config java Selection Path Priority Status ———————————————————— 0 /usr/lib/jvm/java-7-oracle/jre/bin/java 1062 auto mode 1 /usr/lib/jvm/java-6-openjdk/jre/bin/java 1061 manual mode 2 /usr/lib/jvm/java-7-oracle/jre/bin/java 1062 manual mode * 3 /usr/lib/jvm/jdk1.7.0_45/bin/java 1 manual mode […]