java - Maven 项目在 prod 中寻找不存在的路径

标签 java maven

我在我的软件中使用配置文件,该文件位于正确的根目录(非本地)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/

相关文章:

java - 使用 selenium 和虚拟电子邮件服务器测试重置密码功能

java - 打开.jar时为"A java exception has occurred"

java - Java(8)中是否有类似于Haskell中的 "let"或 "where"的东西

java - Java 中的接口(interface)数组

maven - 分析 Maven

azure - azure devops.Apache maven 上基于 java 的 Web 应用程序的管道,用于创建 build 。下面的 yaml 代码和我收到的输出错误

java - 是否可以在 selenium 测试中访问 java bean?

maven - mvnrepository.com 上的图标和标签

java - 如何将 Maven 项目转换为 Eclipse 中使用 Ant 构建的动态 Web 项目?

java - Log4j2 Java 无法导入 org.apache.logging.log4j.core