标签: classpath

测试代码和主代码的单独类路径

我在Eclipse的Java应用程序中有两个源代码树.一个是"src",一个是"测试".每个包含.java文件的目录树.到现在为止还挺好.

但是,我希望"test"中的类能够在"src"中看到类,但是对于"src"中的类,无法在"test"中看到类.同样,我想要包含一些测试库.我不希望任何这些库在"主"树中可用,以免我不假思索地使用它.

有没有一种简单的方法在Eclipse中设置它?

java eclipse classpath

6
推荐指数
1
解决办法
575
查看次数

批处理和for循环

我有一个.cmd文件启动的java应用程序.我想通过这个批处理设置应用程序的类路径,所有需要的jar都进入lib文件夹.

这是我尝试过的:

 set _classpath=.
for %%i in (%1/lib/*.*) do ( set _classpath=%_classpath%;%%i )
Run Code Online (Sandbox Code Playgroud)

令人惊讶的是,它似乎没有像预期的那样发挥作用.假设lib文件夹中有3个jar:

  • pikachu.jar
  • sonic.jar
  • mario.jar

这是发生的事情:

  1. set _classpath =.
  2. set _classpath =.; pikachu.jar
  3. set _classpath =.; sonic.jar
  4. set _classpath =.; mario.jar

显然,我希望得到的是

  • set _classpath =.; pikachu.jar; sonic.jar; mario.jar

任何的想法 ?

感谢致敬,

java batch-file classpath

6
推荐指数
1
解决办法
1617
查看次数

运行其他jar文件时,Ant构建文件无法将jar文件放入类路径中

我是Ant构建文件的新手,我已经设法建立我的构建文件来创建我的构建目录结构,编译我的所有文件,并将它们装入一个带有清单正确指定主类的jar中.

但是,我也试图在buildfile中添加运行我刚刚创建的jar的功能.它会尝试运行,但我遇到了这个错误:

run:
 [java] Exception in thread "main" java.lang.NoClassDefFoundError: edu/course/lab/pkg3/Lab31

 [java]     at edu.school.oad.lab.pkg1.Main.<init>(Unknown Source)
 [java]     at edu.school.oad.lab.pkg1.Main.main(Unknown Source)
 [java] Caused by: java.lang.ClassNotFoundException: edu.course.antlab.pkg3.Lab31
 [java]     at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
 [java]     at java.security.AccessController.doPrivileged(Native Method)
 [java]     at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
 [java]     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

 [java]     at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
 [java]     ... 2 more
 [java] Java Result: 1
Run Code Online (Sandbox Code Playgroud)

所以我知道这意味着当我尝试运行jar文件时,jar文件的结构正确并且清单设置正确,但它找不到类Lab31,因为它没有包含在该特定的jar文件中.相反,它包含在我的库文件夹中的另一个jar文件中./lib/.我尝试使用相同的方法设置运行jar文件的类路径,就像我为实际编译设置类路径一样,但这似乎不起作用.

这是我对构建文件的运行部分所拥有的:

<target name="run" depends="init, prepare">
    <java jar="${build}/jar/AntLabRun.jar" fork="true">
       <classpath>
          <pathelement location="${lib}/resources.jar" /> 
       </classpath>
    </java>
</target>
Run Code Online (Sandbox Code Playgroud)

我唯一的想法是jar文件认为resources.jar文件位于$ {build}/jar/$ {lib} /resources.jar而不仅仅是$ {lib} /resources.jar,但如果这是我仍然不确定如何解决它.有人可以提供一些指导吗?

java ant jar classpath

6
推荐指数
2
解决办法
2032
查看次数

将非jar文件添加到Java类路径

我正在尝试通过类路径为我的应用程序提供.txt文件.在我的启动脚本中 - 它与.txt文件位于同一文件夹中 - 我设置了以下内容:

设置CLASSPATH =%CLASSPATH%;%CD%\ sample.txt java -classpath%CD%\ sample.txt

在我的应用程序中,我尝试了以下内容:

  1. 的getClass().的getResource( "sample.txt的")
  2. 的getClass().的getResource( "/ sample.txt的")
  3. .的getClass()的getResource( "类路径:为sample.txt")

以上都不是.任何帮助,将不胜感激.

java classpath

6
推荐指数
1
解决办法
2万
查看次数

当类路径中存在类时,如何防止隐式Java编译?

假设我有两个类(Bob和Tom),Bob使用Tom,但Tom不需要Bob.这两个文件都位于相同的目录结构中.

public class Bob {
  public static void main(String[] args) {
    System.out.println(Tom.MESSAGE);
  }
}

public class Tom {
  public static String MESSAGE = "Hello World";
}
Run Code Online (Sandbox Code Playgroud)

如果我尝试以典型的方式编译Bob,我可以将其隐式编译Tom.java,因为它被识别为依赖Bob.java.这很好用.

但现在让我们说我想把Tom放在一个JAR文件中.所以我构建Tom.java并将结果放入JAR文件:libTom.jar.我现在使用指向的类路径进行编译libTom.jar.不幸的是,编译器会看到该Tom.java文件并导致它被编译而不是使用该类libTom.jar.有没有办法让编译器跳过隐式构造,Tom.java如果在类路径中找到类?

我认识到这个例子是相当人为的.请放心,围绕这个问题有一个更复杂,更少做作的用例.谢谢.

java javac classpath

6
推荐指数
1
解决办法
865
查看次数

在UBUNTU中添加JAR类路径

这可能是一个常见问题,但我无法在UBUNTU中为JAR文件添加类路径.我已经在下面给出了我所知道的所有细节:

java位于这里:which java命令的o/p 是 -/usr/bin/java

sudo vim /etc/bash.bashrc  
export CLASSPATH=$CLASSPATH:/downloads/aws-java-sdk-1.3.24/lib/aws-java-sdk-1.3.24.jar
Run Code Online (Sandbox Code Playgroud)

ps:downloads文件夹直接位于root下

sudo vim /etc/environment
CLASSPATH="/usr/lib/jvm/jdk1.7.0/lib: /downloads/aws-java-sdk-1.3.24/lib/aws-java-sdk-1.3.24.jar:"
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,我在bashrc和etc/environment中添加了类路径...但是在尝试运行S3Sample.javaawssdk for java 时遇到错误.

当我编译java文件时,我收到以下错误:

ubuntu@domU-12-31-39-03-31-91:/downloads/aws-java-sdk-1.3.24/samples/AmazonS3$ javac S3Sample.java

S3Sample.java:25: error: package com.amazonaws does not exist
import com.amazonaws.AmazonClientException;
Run Code Online (Sandbox Code Playgroud)

现在,我清楚地知道JAR文件没有添加到类路径中,因此我没有收到错误.我也试过javac类路径选项 - 但它不起作用:(

PS:正确设置JAVA home,因为其他java程序正常工作.

java ubuntu classpath

6
推荐指数
1
解决办法
2万
查看次数

Java动态加载插件

我想创建一个可以动态加载插件的应用程序,但我没有在互联网上找到任何文献.

困难的是:我事先不知道这个名字.

例如,我有一个插件界面:

public interface Plugin {
    public static Plugin newPlugin();
    public void executePlugin(String args[]);
}
Run Code Online (Sandbox Code Playgroud)

这样在jar文件中实现插件的每个Class 都在列表中实例化:

Method method = classToLoad.getMethod ("newPlugin");
mylist.add(method.invoke(null);
Run Code Online (Sandbox Code Playgroud)
  1. 第一个问题是,我不能在接口中使用静态方法.
  2. 第二个问题是,我不知道如何找到实现接口的所有类

谢谢你的帮助.

java plugins runtime classpath

6
推荐指数
1
解决办法
7871
查看次数

Clojure REPL无法在Windows命令提示符下启动

我在我的CLASSPATH环境变量中放置了clojure-1.4.0.jar路径(C:\ clojure-1.4.0\clojure-1.4.0.jar).现在,当我尝试使用以下代码从命令行启动REPL时:

java -cp clojure-1.4.0.jar clojure.main

我收到一个错误:

Error: Could not find or load main class clojure.main
Run Code Online (Sandbox Code Playgroud)

它曾经在我设置emacs之前工作.有任何想法吗.

java emacs clojure classpath read-eval-print-loop

6
推荐指数
1
解决办法
2382
查看次数

Tomcat 6 vs 7 - lib vs shared/lib - jars only?

从Tomcat 6升级到Tomcat 7时 - 我们在6上的$ CATALINA_HOME/lib目录中的类路径上保留了许多我们想要的文件 - 在Tomcat 7上移动这两个$ CATALINA_HOME/shared/lib是有意义的.

我们发现jar文件很好 - 但是任何不是jar文件的东西 - 例如xml文件等都没有被shared/lib目录中加载的类拾取.当我们将非jar文件移回$ CATALINA_HOME/lib目录时 - 它们加载到类路径中而没有问题.

我的问题是 - 这是Tomcat 7中的类加载器中的错误吗?或者这是预期的行为?(无法以与从$ CATALINA_HOME/lib加载文件的方式不一致的方式从$ CATALINA_HOME/shared/lib将非jar文件加载到类路径中)

操作系统:Windows7

Tomcat版本:7.0.30

Java版本:1.7.0_11

java tomcat classpath classloader tomcat7

6
推荐指数
1
解决办法
1万
查看次数

为什么在WebSphere Liberty Profile启动时找不到清单类路径条目?

使用WebSphere Liberty Profile(版本2013.11.0.0 - 8.5.5.Next Alpha和扩展内容)启动我的应用程序时,会出现很多警告:

W SRVE9967W: The manifest class path dhbcore.jar can not be found in jar file wsjar:file:[blablabla] or its parent.
W SRVE9967W: The manifest class path jms.jar can not be found in jar file wsjar:file:[blablabla] or its parent.
W SRVE9967W: The manifest class path com.ibm.mq.jmqi.jar can not be found in jar file wsjar:file:[blablabla] or its parent.
W SRVE9967W: The manifest class path dhbcore.jar can not be found in jar file wsjar:file:[blablabla] or its parent.
W SRVE9967W: …
Run Code Online (Sandbox Code Playgroud)

manifest classpath websphere-liberty

6
推荐指数
1
解决办法
8077
查看次数