속성 파일을 포함하는 maven assemble을 사용하여 far jar 파일을 만들었습니다. 그것은 내 IDE에서 작동합니다. 그러나, 내가 package
후에 내 모든 응용 프로그램이 작동하지 않습니다.Java Guava Resources.getResource가 원거리에서 작동하지 않습니다.
나는 src/main/resources
내 모든 등록 정보 파일을 가지고 내가이 오류를 얻을 지방 항아리에서 내 프로그램을 실행할 때 나는 특성이
그러나 루트 폴더에 파일을 참조 jar tf farjar.jar
를 사용에서 확인할 수 있습니다
Exception in thread "main" java.lang.IllegalArgumentException: resource ci.properties not found.
at com.google.common.base.Preconditions.checkArgument(Preconditions.java:119)
at com.google.common.io.Resources.getResource(Resources.java:191)
at io.conde.config.ConfigReader.read(ConfigReader.java:23)
at io.conde.SparrowHalToS3.main(SparrowHalToS3.java:46)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.apache.spark.deploy.SparkSubmit$.org$apache$spark$deploy$SparkSubmit$$runMain(SparkSubmit.scala:736)
at org.apache.spark.deploy.SparkSubmit$.doRunMain$1(SparkSubmit.scala:185)
at org.apache.spark.deploy.SparkSubmit$.submit(SparkSubmit.scala:210)
at org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:124)
at org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
다음은 내 작품입니다.
<resources>
<resource>
<directory>src/main/resources</directory>
<includes>
<include>**/*</include>
</includes>
</resource>
</resources>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.4.1</version>
<configuration>
<descriptorRefs>
<descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
<executions>
<execution>
<id>make-assembly</id>
<phase>package</phase>
<goals>
<goal>assembly</goal>
</goals>
</execution>
</executions>
</plugin>
그리고 여기 내 코드는 구아바를 사용합니다.
public Properties read(String environment) throws IOException {
final URL url = Resources.getResource(format("%s.properties", environment));
final ByteSource byteSource = Resources.asByteSource(url);
InputStream inputStream = null;
try {
inputStream = byteSource.openBufferedStream();
properties.load(inputStream);
return properties;
} catch (final IOException ioException) {
LOG.error(ioException.getMessage());
} finally {
if (inputStream != null) {
try {
inputStream.close();
} catch (final IOException ioException) {
LOG.error(ioException.getMessage());
}
}
}
return null;
}
리소스의 추가 구성이 제거되어 기본값이 제거되었습니다. 게다가 자원을 얻으려면'getResource ("/ ...")'를 설정해야합니다. – khmarbaise
이제'resource /ci.properties를 찾을 수 없습니다. ' – toy
jar 파일에 리소스가 올바르게 포함되어 있습니까? jar 파일의 내용을 확인 했습니까? – khmarbaise