我在我的软件中使用配置文件,该文件位于正确的根目录(非本地)src/main/java/pdf/factory/fop.xconf
。编译代码后,它在本地查找文件 fopBaseUri=C:\Users\user\Documents\software\local\target\data\bin\content\sftw.web-0.0.0-SNAPSHOT.war\WEB-INF\classes\pdf\fopfactorybasedir\fop.xconf
我没有那个路径,只有C:\Users\user\Documents\software\local\target\data\bin
所以我已经创建了路径的其余部分,并且它的工作方式应该是这样的..
但是,当我部署时,它不起作用,可能是因为编译后路径不存在,并且在mvn install时它全部删除。
我如何强制它查看路径,或者强制文件成为我使用的文件(非本地到 src/...)
这是我的代码:
@ApplicationScoped
public class FopFactoryService {
private static final String ROOT_PATH = "/pdf/fopfactorybasedir/fop.xconf";
private final FopFactory fopFactory;
private final FOUserAgent foUserAgent;
private final TransformerFactory transformerFactory;
public FopFactoryService() throws URISyntaxException, IOException, SAXException {
final URI uri = FopFactoryService.class.getResource(ROOT_PATH).toURI();
final File f = new File(uri.getPath());
LOG.info("fopBaseUri={}", f);
fopFactory = FopFactory.newInstance(f);
foUserAgent = fopFactory.newFOUserAgent();
transformerFactory = TransformerFactory.newInstance();
}
我错过了什么?
最佳答案
maven 构建后,该文件现在可以位于服务器上。
vfs路径是内部的,Jboss为自己创建的虚拟文件系统,但仅限于jboss使用的内部内存。新的 File() 查找真实的硬盘位置。不存在这样的路径,因为它只是虚拟的。
这是自 Jboss 版本 5 以来的一个常见问题,因此解决方案通过这里回答的这个问题:Not getting absolute file path from resources
如果你得到 java.lang.ClassCastException: java.io.FileInputStream cannot be cast to org.jboss.vfs.VirtualFile
不用类型转换就试试吧。
希望它对某人有帮助。
关于java - Maven 项目在 prod 中寻找不存在的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61612596/