我正在编写一个小应用程序,当我尝试创建一个ImageIcon时,我总是遇到异常.这个例外代码引起了异常:
prayerLevel.setIcon(new ImageIcon(getClass().getResource("/icons/icon_prayer.png")));
Run Code Online (Sandbox Code Playgroud)
现在在我的程序中,文件夹/ icons /确实存在.我不知道它是否有所不同但是类文件在一个包中,其中icons文件夹在项目文件夹中(当你看到bin和src文件夹时).
我已经四处寻找,我找不到可以帮助我解决问题的解决方案.也许你们中的任何人都可以帮忙吗?
编辑:有人要求我的文件夹层次结构:

我知道类文件与图标不在同一个文件夹中,但我已经创建了应用程序,我必须从不同的文件夹加载文件并执行/文件夹/始终用于工作.
编辑2:
System.out.println(getClass().getResource("/icons/icon_prayer.png") == null);
Run Code Online (Sandbox Code Playgroud)
打印真实.
我有一个项目,我需要解析一些HTML文件作为播放应用程序的一部分.为了那个任务,我想我会申请nekohtml.我将nekohtml指定为dependencies.yml中的dep和isse'play dependencies'.这将nekohtml和xerces拉入lib文件夹.一切都很好.但是,nekohtml需要在类路径上的xerces之前才能正常工作.至于我在https://github.com/playframework/play/blob/master/framework/pym/play/application.py#L124上可以看到,类路径上的jar的顺序是任意的,如http:// docs.python.org/library/os.html#os.listdir 是否有可能以某种方式手动设置类路径上的jar的顺序?
编辑:我的dependencies.yml看起来像这样:
require:
- play
- org.apache.poi -> poi 3.7
- net.sourceforge.nekohtml -> nekohtml 1.9.14:
transitive: false
- xerces -> xercesImpl 2.9.1
Run Code Online (Sandbox Code Playgroud)
当我发出命令'play classpath'时,它列出了以下内容(摘录):
['/ home/leif/dev/java/fun/tk/conf','/ home/leif/dev/play/play1.2/framework/play-1.2.jar','/ home/leif/dev/java /fun/tk/lib/jaxen-1.1.jar','/ home/leif/dev/java/fun/tk/lib/log4j-1.2.15.jar','/ home/leif/dev/java/fun /tk/lib/junit-4.8.1.jar','/ home/leif/dev/java/fun/tk/lib/jta-1.1.jar','/ home/leif/dev/java/fun/tk /lib/dom4j-1.6.1.jar','/ home/leif/dev/java/fun/tk/lib/xercesImpl-2.9.1.jar','/ home/leif/dev/java/fun/tk /lib/commons-collections-3.2.1.jar','/ home/leif/dev/java/fun/tk/lib/xml-resolver-1.2.jar','/ home/leif/dev/java/fun /tk/lib/xml-apis-1.3.04.jar','/ home/leif/dev/java/fun/tk/lib/antlr-2.7.6.jar','/ home/leif/dev/java /fun/tk/lib/poi-3.7.jar','/ home/leif/dev/java/fun/tk/lib /commons -logging-1.1.1.jar','/ home/leif/dev/java /fun/tk/lib/nekohtml-1.9.14.jar','/ home/leif/dev/play/play1.2/framework/lib/jj-textile.jar',...
所以xerces明显领先于nekohtml,即使传递dep被排除并在nekohtml之后手动添加.
目前,我转到属性 - >构建路径 - >库 - >然后将外部jar添加到我的类路径中,我知道这是正确的方法,对于java至少.但是,问题是我在Android SDK 2.1上运行它.当我运行程序时,我不认为android模拟器可以"找到"类路径中的.jars.这可能吗?如果是这样,在将jar添加到我的类路径之前,我将哪个文件夹放入?
我试图用来Class.getResource("rsc/my_resource_file.txt")在Eclipse应用程序中加载文件.但是,无论我在Eclipse中做什么,类路径总是只包含Eclipse Launcher的一个条目:
... /日蚀/插件/ org.eclipse.equinox.launcher_1.2.0.v20110502.pkc
如何配置类路径?
注意:在运行时,我使用以下代码确定类路径:
URLClassLoader cl = (URLClassLoader) ClassLoader.getSystemClassLoader();
for (URL classpathURL : cl.getURLs()) {
System.out.println(classpathURL);
}
Run Code Online (Sandbox Code Playgroud)
编辑:更多信息.
问题的根源Class.getResource("rsc/my_resource_file.txt")是返回null.在一个简单的5行"Java应用程序"中做了一些小实验,我以为我已经弄明白了,问题与类路径有关.显然,类路径与"Eclipse应用程序"的行为略有不同.我通过Class.getResource("/rsc/my_resource_file.txt")感谢BalusC 解决了这个问题.
我有一个C二进制文件,通过JNI调用Java.我将CLASSPATH设置为somedir/*以获取somedir中的所有jar.
当我运行二进制文件时,找不到所需的类定义.我跑的时候
java that.class's.name
Run Code Online (Sandbox Code Playgroud)
从同一命令行,成功找到该类.如果我明确地将somedir /中的所有jar添加到类路径中,一切都很好,但这导致了一个很长的类路径,我想避免.
通过JNI执行的JVM是否支持类路径的通配符扩展?可以这样做吗?
我想替换我的Eclipse插件所依赖的一些类(javax.tools.*)rt.jar依赖于我自己的这些类的版本.rt.jar通常通过设置bootclasspath来替换类.我的问题是如何在Eclipse插件中执行此操作.
我创建了这些类的版本的JAR文件,并将其添加到Bundle-ClassPath的属性MANIFEST.MF,该bin.includes属性build.properties,和.classpath.我还将我的JAR文件的路径输入到Eclipse Application启动配置对话框的名为"Bootstrap entries:"的字段中,并将我的JAR移动到"Project Properties> Build Path"的"Order and Export"选项卡中的顶部.尽管如此,当我使用Eclipse Application启动配置运行Eclipse插件时,插件使用原始类rt.jar而不是我的JAR文件中的类.
我如何配置我的Eclipse插件,以便它首先查找我的JAR文件中的类,并且rt.jar仅在我的JAR文件中找不到该类时才进行咨询?
我遇到了 java.lang.ClassNotFoundException: net.sourceforge.jtds.jdbc.Driver
我可以通过将jtds.jar文件放在CATALINA_HOME/lib目录中来解决这个错误,但这不是一个理想的解决方案,因为应用程序应该足够模块化,可以在任何服务器上部署.
我有jtds.jar文件在[tomcat_dir]/webapps/myapp/WEB-INF/lib哪里,我想从中找到它.
我知道有很多相似的问题,所以我很抱歉,如果这是一个重复,但我还没有能够找到一个有用的帖子.
为什么我的应用程序找不到jtds.jar我在应用程序包中包含的正确文件?为了让应用识别该jar文件,我需要做什么?
def mergedCompileClasspath == null
project.sourceSets.each {
if (mergedCompileClasspath == null)
mergedCompileClasspath = it.compileClasspath
else
mergedCompileClasspath .plus(it.compileClasspath)
}
Run Code Online (Sandbox Code Playgroud)
plus() 方法不起作用。compileClassPath 是不可变的?如何创建一个空的fileCollection?
有没有办法获取 Kotlin 中“资源”文件夹中所有文件的列表?
我可以将特定文件读取为
Application::class.java.getResourceAsStream("/folder/filename.ext")
Run Code Online (Sandbox Code Playgroud)
但有时我只想将文件夹“文件夹”中的所有内容提取到外部目录。
谢谢你。
我是 Spring Boot 的新手,目前正在建立一个项目。当我运行应用程序时,它运行良好,但在控制台中我不确定。你们能帮帮我吗。谢谢
The Class-Path manifest attribute in /Users/user/.m2/repository/com/sun/xml/bind/jaxb-impl/2.3.2/jaxb-impl-2.3.2.jar referenced one or more files that do not exist: file:/Users/user/.m2/repository/com/sun/xml/bind/jaxb-impl/2.3.2/jaxb-runtime-2.3.2.jar,file:/Users/user/.m2/repository/com/sun/xml/bind/jaxb-impl/2.3.2/txw2-2.3.2.jar,file:/Users/user/.m2/repository/com/sun/xml/bind/jaxb-impl/2.3.2/istack-commons-runtime-3.0.8.jar,file:/Users/user/.m2/repository/com/sun/xml/bind/jaxb-impl/2.3.2/stax-ex-1.8.1.jar,file:/Users/user/.m2/repository/com/sun/xml/bind/jaxb-impl/2.3.2/FastInfoset-1.2.16.jar,file:/Users/user/.m2/repository/com/sun/xml/bind/jaxb-impl/2.3.2/jakarta.activation-api-1.2.1.jar
The Class-Path manifest attribute in /Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-runtime-2.3.1.jar referenced one or more files that do not exist: file:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/jaxb-api-2.3.1.jar,file:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/txw2-2.3.1.jar,file:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/istack-commons-runtime-3.0.7.jar,file:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/stax-ex-1.8.jar,file:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/FastInfoset-1.2.15.jar,file:/Users/user/.m2/repository/org/glassfish/jaxb/jaxb-runtime/2.3.1/javax.activation-api-1.2.0.jar
Run Code Online (Sandbox Code Playgroud)