全部
我创建了一个jar文件,其中包含以下manifest.mf:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.3
Created-By: 1.6.0_25-b06 (Sun Microsystems Inc.)
Main-Class: my.Main
Class-Path: . lib/spring-core-3.2.0.M2.jar lib/spring-beans-3.2.0.M2.jar
在其根中有一个名为my.config的文件,在我的spring上下文.xml中引用,如下所示:
<bean id="..." class="...">
<property name="resource" value="classpath:my.config" />
</bean>
如果我运行jar,除了加载特定文件之外,一切看起来都很好:
Caused by: java.io.FileNotFoundException: class path resource [my.config] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/D:/work/my.jar!/my.config
at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:205)
at org.springframework.core.io.AbstractFileResolvingResource.getFile(AbstractFileResolvingResource.java:52)
at eu.stepman.server.configuration.BeanConfigurationFactoryBean.getObject(BeanConfigurationFactoryBean.java:32)
at eu.stepman.server.configuration.BeanConfigurationFactoryBean.getObject(BeanConfigurationFactoryBean.java:1)
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:142)
... 22 more
有什么提示吗?
我知道这个问题已经有了答案。但是,对于那些使用spring boot的人来说,这个链接帮助了我-https://smarterco.de/java-load-file-classpath--boot/
但是,ResourceLoader.getResource(“classpath:file.txt”).getFile();
导致了此问题,而SBK的注释是:
就是这样。java.io.file表示文件系统中目录结构中的文件。Jar是一个java.io.file。但该文件中的任何内容都超出了java.io.file的范围。就Java而言,在未被压缩之前,jar文件中的一个类与word文档中的一个单词没有什么区别。
帮助我理解了为什么要改用getInputStream()
。现在对我管用了!
谢谢!
如果您的spring-context.xml和my.config文件在不同的JAR中,那么您将需要使用classpath*:my.config
?
此处提供更多信息
此外,确保从jar文件内部加载时使用的是resource.getInputStream()
而不是resource.getFile()
。
spring boot可运行的jar文件是针对生产环境的,是针对生产所需的任何优化,还是针对测试/原型设计,我们应该在生产机器的应用服务器上生成和部署WAR文件?
我正在尝试将我的checkers程序从Eclipse导出到一个可运行的jar文件中。我得到一个jar文件,但它不运行。。。它给了我关于未找到的类的神秘错误消息。jar文件的意义不在于它包含了它所需要的所有类吗?我不知道现在该做什么。 这是我运行罐子时得到的: 知道是的一个内部类可能会有所帮助?有什么问题吗?我在导出向导中尝试了“提取所需库”和“打包所需库”。 我还尝试从命令行使用,但效果不太好。以
在我的Spring Boot配置文件中,我是否可以指定相对于Spring Boot jar的日志文件位置,而不是相对于启动jar的目录? null 开始: 结果: /random/dir/logs/app.log 期望: /app/dir/logs/app.log 附加信息:jar将运行在不同的操作系统上。因此jar路径可能类似于: null 完整解决方案:基于@Satyesht 开始:
问题内容: 问题说明了一切。 在我的情况下,特殊之处在于当前工作目录不是jar文件的位置,而是(我的jar文件由Windows使用右键菜单启动,我想将文件夹的路径作为参数传递给jar) 。 现在,我想加载一个与jar相同的文件夹中的配置文件。该文件的目的当然是为jar提供设置。对我来说重要的是,xml文件 位于 jar文件 之外 ,以便于编辑。 我很难加载该文件。Windows执行该行 调用整个过
我有一些基于的测试用例,并尝试生成文件。我使用在下设置工件的详细信息。我选择了classname,但得到错误,这是不可接受的。 更新2018.05.03.我在一个新类中创建了main方法,但得到了相同的错误消息。
我通过spring-boot-maven-plugin(V1.3.6)创建完全可执行的jar,方法如下: 当我从目标目录启动类似于可执行文件的结果jar(类似于“./app.jar”,而不是通过“java-jar app.jar”)时,应用程序可以正确地启动和工作,但是如果我将此jar复制到另一个目录,我会得到错误:“无效或损坏的jar文件/home/user/spring”。(我使用Linux