Java 正在从资源读取文件-路径必须存在:/app/app.jar/BOOT-INF/classes/特征/
我需要一个文件的类路径。我找到了使用类路径获取路径的方法Java 正在从资源读取文件-路径必须存在:/app/app.jar/BOOT-INF/classes/特征/,java,resources,classpath,Java,Resources,Classpath,我需要一个文件的类路径。我找到了使用类路径获取路径的方法 String filePath = com.google.common.io.Resources.getResource(feature).getFile(); String filePath = >com.google.common.io.Resources.getResource(feature).getFile(); 我在服务器上部署了我的应用程序。使用cucumber执行代码时,出现了此错误 path must exis
String filePath = com.google.common.io.Resources.getResource(feature).getFile();
String filePath = >com.google.common.io.Resources.getResource(feature).getFile();
我在服务器上部署了我的应用程序。使用cucumber执行代码时,出现了此错误
path must exist: /app/app.jar!/BOOT-INF/classes!/features/attachment/heal.feature
path must exist: /app/app.jar!/BOOT-INF/classes!/features/attachment/heal.feature
我检查了app.jar
内的target
文件夹,无法提取和查看内容
我使用的是Spring boot 2
,这是pom
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>pmc.aop.core</groupId>
<artifactId>pmc-integration-tests</artifactId>
<version>0.1.5-${BUILD_NUMBER}</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
</parent>
<properties>
<java.version>11</java.version>
<spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
<spring-boot.version>2.2.1.RELEASE</spring-boot.version>
<drools.version>7.35.0.Final</drools.version>
<kie.version>7.35.0.Final</kie.version>
<lombok.version>1.16.22</lombok.version>
<cucumber-version>5.7.0</cucumber-version>
</properties>
<dependencies>
<dependency>
<groupId>pnc.aop.core</groupId>
<artifactId>aop-lib-kafka-crypto</artifactId>
<version>0.4.0-1</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream-binder-kafka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-stream</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.10</version>
</dependency>
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.12.4</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber-version}</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber-version}</version>
</dependency>
<dependency>
<groupId>io.cucumber</groupId>
<artifactId>cucumber-spring</artifactId>
<version>${cucumber-version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>${spring-boot.version}</version>
<configuration>
<executable>true</executable>
</configuration>
</plugin>
<plugin>
<groupId>org.jfrog.buildinfo</groupId>
<artifactId>artifactory-maven-plugin</artifactId>
<version>2.6.1</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.5</version>
<configuration>
</configuration>
<executions>
<execution>
<id>prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>prepare-package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</version>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>
</plugins>
</build>
4.0.0
pmc.aop.core
pmc集成测试
0.1.5-${BUILD_NUMBER}
罐子
org.springframework.boot
spring启动程序父级
2.2.1.发布
11
霍克斯顿释放
2.2.1.发布
7.35.0.1决赛
7.35.0.1决赛
1.16.22
5.7.0
pnc.aop.core
自由卡夫卡密码
0.4.0-1
org.springframework.cloud
春天的云流活页夹卡夫卡
org.springframework.cloud
春云流
org.apache.commons
commons-lang3
3.10
org.mongodb
mongo java驱动程序
3.12.4
org.springframework.boot
SpringBootStarterWeb
org.springframework.boot
弹簧起动试验
org.springframework.boot
弹簧靴起动器执行器
黄瓜
黄瓜爪哇
${cumber version}
黄瓜
黄瓜刺柏
${cumber version}
黄瓜
黄瓜之春
${cumber version}
org.projectlombok
龙目
真的
org.springframework.cloud
spring云依赖关系
${spring cloud.version}
聚甲醛
进口
应用程序
org.springframework.boot
springbootmaven插件
${spring boot.version}
真的
org.jfrog.buildinfo
人工maven插件
2.6.1
org.jacoco
jacocomaven插件
0.8.5
配制剂
配制剂
报告
准备包装
报告
单元后测试
测试
报告
org.apache.maven.plugins
maven编译器插件
3.6.0
${java.version}
${java.version}
org.projectlombok
龙目
${lombok.version}
maven surefire插件
2.22.2
看起来罐子坏了
我需要一个文件的类路径。我找到了使用类路径获取路径的方法
String filePath = com.google.common.io.Resources.getResource(feature).getFile();
String filePath = >com.google.common.io.Resources.getResource(feature).getFile();
我在服务器上部署了我的应用程序。使用cucumber执行代码时,出现了此错误
path must exist: /app/app.jar!/BOOT-INF/classes!/features/attachment/heal.feature
path must exist: /app/app.jar!/BOOT-INF/classes!/features/attachment/heal.feature
文件路径与类路径不同。如果查看,您将看到与常规jar文件不同的布局:
example.jar
|
+-META-INF
| +-MANIFEST.MF
+-org
| +-springframework
| +-boot
| +-loader
| +-<spring boot loader classes>
+-BOOT-INF
+-classes
| +-mycompany
| +-project
| +-YourClasses.class
+-lib
+-dependency1.jar
+-dependency2.jar
example.jar
|
+-META-INF
|+-MANIFEST.MF
+-组织机构
|+-springframework
|+引导
|加载器
| +-
+-BOOT-INF
+-班级
|+-mycompany
|+-项目
|+-YourClasses.class
+-解放党
+-依赖关系1.jar
+-依赖性2.jar
BOOT-INF/classes
和BOOT-INF/lib
的内容位于类路径上。因此您可以使用classpath:features/attachment/heal.feature
作为功能路径
请注意,黄瓜只有两种颜色 您不使用
文件
获取类路径资源。在春季,您可以简单地直接注入一个资源
甚至是一个InputStream
对象,框架将负责为您解析和连接资源。@chrylis小心优化-任何示例?使用resourceLoader.getResource(“类路径:“+功能”).getURI().getPath()
获取“features/local/notify.feature”
和cucumber一起工作。但是在我的服务器上我得到了[null]
我猜你没有把文件放在jar
@chrylis谨慎的Optimistic你想把它再次变成文件
;这在jar中不起作用。总是直接使用输入流
获取资源。