我正在尝试将两个文件夹添加到我的eclipse项目的类路径中,假设文件夹A和文件夹B.B在A内部.每当我向类路径添加A时
<classpathentry kind="lib" path="/A"/>
Run Code Online (Sandbox Code Playgroud)
它工作得很好,但我也需要能够访问B中的文件.每当我尝试添加
<classpathentry kind="lib" path="/A/B"/>
Run Code Online (Sandbox Code Playgroud)
它说,到类路径
无法在库A中嵌套'A/B'
在编辑类路径时我是新手,所以我想知道,无论如何在eclipse类路径中添加一个文件夹,它嵌套在另一个也在eclipse类路径中的文件夹中?
免责声明:
这是.NET GUI尝试围绕JAVA工作的经典案例.
问题描述:
我正在尝试使用JFace和SWT构建一个非常简单的GUI - 代码很简单(有很多教程),它不是那么简单,我似乎无法让JFace和SWT在插件项目之外工作.
我希望能够在我的项目中使用JFace和SWT没有麻烦,因为我把"C:/ eclipse 3.5/plugins"放在我的CLASSPATH中(从我的计算机 - >属性 - >高级 - >环境变量)以及我在PATH中找到的所有swt - *.dll(可以确定本地用户和全局PATH),如本文在"安装SWT和JFace"框中所示.
问题是我无法从eclipse.org导入任何东西,除非我直接引用buildpath中的jar - > libraries - >添加外部jar(为了构建它我必须添加以下jar:org.eclipse.swt .win32.win32.x86_3.5.1.v3555a.jar,org.eclipse.jface_3.5.1.M20090826-0800.jar).一旦我这样做它构建良好但然后当我作为"Java应用程序"运行时,我得到以下错误(我应该运行其他东西吗?):
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor
at demo.ui.test.EntryPoint.main(EntryPoint.java:18)
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.IProgressMonitor
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:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 1 more
Run Code Online (Sandbox Code Playgroud)
我试图调试它,基本上它会在尝试实例化ApplicationWindow类(org.eclipse.jface.window.ApplicationWindow)时抛出.试图重现错误,我注释掉了我的所有代码并将其替换为我的main中的以下内容,它在第一行引发了与上面相同的错误:
ApplicationWindow w = new ApplicationWindow(null); //<-- error on this line
w.setBlockOnOpen(true);
w.open();
Display.getCurrent().dispose(); …Run Code Online (Sandbox Code Playgroud) 我的清单文件的Class-Path条目中有一个带有两个jar的runnable jar:
Class-Path: module1-0.0.1-SNAPSHOT.jar base-0.0.1-SNAPSHOT.jar
Main-Class: test.MySPI
Run Code Online (Sandbox Code Playgroud)
程序运行正常,并且满足引用的jar中的所有依赖项.但是,当我尝试访问类路径时,jar不存在:
String classpath = System.getProperty("java.class.path");
String[] entries = classpath.split(System.getProperty("path.separator"));
for (String entry : entries) {
System.out.println("Entry: " + entry);
}
Run Code Online (Sandbox Code Playgroud)
只给出
Entry: .\module2-0.0.1-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)
有没有办法访问实际的类路径,因为很明显,系统在路径上找到了这些jar?
我正在尝试配置JAR的类路径,以便我的ResourceBundle可以从中获取属性文件.
如果我从.class文件运行它并指定-cp标志它工作正常,System.err.println(System.getProperty("java.class.path"));并将打印-cp标志中指定的路径.
如果我尝试为它创建一个jar文件,则System.err.println(System.getProperty("java.class.path"));始终打印jar文件的路径,并且不会拾取属性文件.
看来如果你将它作为一个jar文件运行,你就无法指定-cp标志(这是我所希望的,因为切换正在使用的属性文件是很常见的).我已经尝试在jar清单中指定它,但它仍然无法正常工作.
以下是测试jar中的代码和清单,似乎不起作用:
public final class Test {
public static void main(final String[] args) {
System.err.println(System.getProperty("java.class.path"));
}
}
Run Code Online (Sandbox Code Playgroud)
Manifest-Version: 1.0
Created-By: 1.6.0_20 (Sun Microsystems Inc.)
Main-Class: Test
Class-Path: /home/ajanuary/Projects/test/
Run Code Online (Sandbox Code Playgroud)
编辑 原始路径没有意义,所以我改变了它.我想指向ResourceBundle可以在其中找到属性文件的目录.
我创建了mytest.jar文件,其中包含了包含近30个库文件的库.是否可以将所有库jar放在mytest.jar中,这样我只需要分配1个jar?可能是可以使用清单完成吗?谢谢.
Eclipse项目属性> Java构建路径>库选项卡是否类似于java -classpath定义?"构建路径"和"类路径"之间有什么区别?
我的目标是在JBoss 7.1.1中部署一个ear文件.ear文件中的一个类(我无法更改)是使用sun.net.util.IPAddressUtilJRE的rt.jar类.
在我的IDE(eclipse)中解析了这个类并且它正常编译.但是当我尝试在JBoss 7.1.1上部署(包含类的耳朵)时,它给了我java.lang.NoClassDefFoundError: sun/net/util/IPAddressUtil.JAVA_HOME变量在我的机器中设置,我看到JBoss和eclipse都使用相同的JDK(1.6.X)
当我在lib文件夹中将EAR与rt.jar捆绑在一起时,EAR 正确部署(这是一种不好的方法).
我看过JBoss社区,它说要配置为任何第三方jar的模块.但是,我需要的类是在rt.jar中,我不赞成将它添加为模块
有没有办法配置JBoss 7.1.1手动查看%JAVA_HOME%/jre/lib/rt.jar?
提前致谢.
"本地文件名"是指资源文件与类文件位于同一目录中.在下面的情况下,这是JUnitRunner.class文件.getResource()如果路径不以/'' 开头,则Java的文件可以处理此问题
我弄不清楚,如何做同样的ClassPathXmlApplicationContext构造函数?
package springtests;
import java.io.File;
import java.net.URISyntaxException;
import java.net.URL;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class JUnitRunner {
private final static Logger log = LoggerFactory.getLogger(JUnitRunner.class);
@Test
public void test() throws URISyntaxException {
String filename = "test01.xml";
URL url = getClass().getResource(filename);
File file = new File(url.toURI());
log.info("File exists: {}", file.exists());
try {
new ClassPathXmlApplicationContext(filename);
}
catch(Exception e) {
log.error("Can't load context", e);
}
}
}
Run Code Online (Sandbox Code Playgroud)
输出如下
15:32:27,375 3 …
我有一个groovy脚本createWidget.groovy:
import com.example.widget
Widget w = new Widget()
Run Code Online (Sandbox Code Playgroud)
当我像这样运行它时,这个脚本运行得很好:
$ groovy -cp /path/to/widget.jar createWidget.groovy
Run Code Online (Sandbox Code Playgroud)
但是,我想在脚本中硬编码类路径,以便用户不需要知道它在哪里,所以我修改了createWidget.groovy如下(这是在groovy中修改类路径的方法之一):
this.getClass().classLoader.rootLoader.addURL(new File("/path/to/widget.jar").toURL())
import com.example.widget
Widget w = new Widget()
Run Code Online (Sandbox Code Playgroud)
但是这总是在导入时出现运行时错误:unable to resolve class com.example.widget.
这看起来非常正统,我想你不能在导入之前搞乱rootLoader,还是别的什么?
我正在尝试从C++代码创建JVM 7并努力设置正确的类路径.我想使用通配符指定类路径:例如/ path/to/*(将文件夹中的所有jar包括到类路径中)
如果我正在设置类路径
options[0].optionString = "-Djava.class.path=/path/to/*;";
Run Code Online (Sandbox Code Playgroud)
然后找不到我的班级.我试过反斜杠(我使用的是Windows 8),有分号和没有分号,没有任何帮助.这实际上也不能从命令行工作.
然后我尝试提供"-cp"选项,但在这种情况下,无法创建JVM.我试过了:
options[0].optionString = "-cp=/path/to/*";
options[0].optionString = "-cp /path/to/*";
options[0].optionString = "-classpath=/path/to/*";
options[0].optionString = "-classpath /path/to/*";
options[0].optionString = "-cp";
options[0].extraInfo = "/path/to/*";
options[0].optionString = "-cp";
options[1].optionString = "/path/to/*";
Run Code Online (Sandbox Code Playgroud)
这些都没有帮助.
在从C++创建JVM时,您是否知道如何提供带通配符的类路径?
提前致谢