我在Eclipse的Java应用程序中有两个源代码树.一个是"src",一个是"测试".每个包含.java文件的目录树.到现在为止还挺好.
但是,我希望"test"中的类能够在"src"中看到类,但是对于"src"中的类,无法在"test"中看到类.同样,我想要包含一些测试库.我不希望任何这些库在"主"树中可用,以免我不假思索地使用它.
有没有一种简单的方法在Eclipse中设置它?
我有一个.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:
这是发生的事情:
显然,我希望得到的是
任何的想法 ?
感谢致敬,
我是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,但如果这是我仍然不确定如何解决它.有人可以提供一些指导吗?
我正在尝试通过类路径为我的应用程序提供.txt文件.在我的启动脚本中 - 它与.txt文件位于同一文件夹中 - 我设置了以下内容:
设置CLASSPATH =%CLASSPATH%;%CD%\ sample.txt java -classpath%CD%\ sample.txt
在我的应用程序中,我尝试了以下内容:
以上都不是.任何帮助,将不胜感激.
假设我有两个类(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如果在类路径中找到类?
我认识到这个例子是相当人为的.请放心,围绕这个问题有一个更复杂,更少做作的用例.谢谢.
这可能是一个常见问题,但我无法在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程序正常工作.
我想创建一个可以动态加载插件的应用程序,但我没有在互联网上找到任何文献.
困难的是:我事先不知道这个名字.
例如,我有一个插件界面:
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)
谢谢你的帮助.
我在我的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之前工作.有任何想法吗.
从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
使用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)