按照Jfinaldemo的方式配置fatjar方式打包后,无法读取resource文件夹下面的配置文件。
main方法中打印的rootclassPath值为 D:/print/newFolder/fukuwaraku-print.jar
在onstart方法中打印的rootclassPath值为 D:/print/newFolder/config,这个config是怎么来的。为什么不从jar包中读取配置文件
我的主要目的是读取jar包中的report模板文件跟fonts下面的字体文件。
报错如下:java.io.FileNotFoundException: D:\print\newFolder\config\report\WMS_SAGAWA_BLUE.jasper
POM文件
<build> <finalName>fukuwarakuwms</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.8</source> <target>1.8</target> <encoding>UTF-8</encoding> <!-- java8 保留参数名编译参数 --> <!-- compilerArgument>-parameters</compilerArgument --> <compilerArguments> <extdirs>src\main\webapp\WEB-INF\lib</extdirs> <!--该死的压缩图片,删除原来功能,换成阿里的包压缩--> <!--<bootclasspath>${java.home}\jre\lib\rt.jar;${java.home}\jre\lib\jce.jar</bootclasspath>--> </compilerArguments> </configuration> </plugin> <!-- 安装源码到本地仓库 --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-source-plugin</artifactId> <version>2.1.2</version> <executions> <execution> <id>attach-sources</id> <phase>verify</phase> <goals> <goal>jar-no-fork</goal> </goals> </execution> </executions> </plugin> <!-- plugin> <groupId>org.mortbay.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>8.1.8.v20121106</version> <configuration> <stopKey>stop</stopKey> <stopPort>5599</stopPort> <webAppConfig> <contextPath>/</contextPath> </webAppConfig> <scanIntervalSeconds>5</scanIntervalSeconds> <connectors> <connector implementation="org.eclipse.jetty.server.nio.SelectChannelConnector"> <port>80</port> <maxIdleTime>60000</maxIdleTime> </connector> </connectors> </configuration> </plugin --> </plugins> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.jf</include> <include>**/*.jasper</include> </includes> <!-- 是否替换资源中的属性--> <filtering>false</filtering> </resource> <resource> <directory>src/main/resources</directory> </resource> <resource> <directory>src/main/webapp</directory> <includes> <include>**/*.xls</include> <include>**/*.xlsx</include> <include>**/*.jrxml</include> <include>**/*.jasper</include> </includes> </resource> </resources> </build>
项目:JFinal
是 jfinal undertow 约定的存放配置文件的地方,它也是 class path 的一部分
java 规范里头, class path 可以有多个,也可以指向 jar 文件。 你在打成 fatjar 以后, class path 就两个,一个是那个 config 目录,另一个就是你打成的这个 jar 包
读取这两处的配置文件,可以使用 Prop 与 PropKit, 没有问题的