当前位置: 首页 > 面试题库 >

可执行jar找不到属性文件

竺和洽
2023-03-14
问题内容

我在程序中使用以下代码来加载属性文件:

Properties properties = new Properties();
URL url = new App().getClass().getResource(PROPERTIES_FILE);
properties.load(url.openStream());

该代码在Eclipse中运行良好。然后,将程序打包到一个名为MyProgram.jar的JAR中,然后运行它,第二行得到了NullPointerException。JAR不包含属性文件,它们都位于同一目录中。我正在使用Maven创建JAR。我该如何解决这个问题?

更新:我不想将属性文件添加到JAR中,因为它将在部署时创建。


问题答案:

BalusC是正确的,您需要指示Maven 在条目中MANIFEST.MF使用当前目录(.)生成一个Class-Path:

假设您仍在使用Maven汇编插件和jar-with-dependencies描述符来构建可执行JAR,则可以使用以下命令告诉插件这样做:

  <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>2.2</version>
    <configuration>
      <descriptorRefs>
        <descriptorRef>jar-with-dependencies</descriptorRef>
      </descriptorRefs>
      <archive>
        <manifest>
          <mainClass>com.stackoverflow.App</mainClass>
        </manifest>
        <manifestEntries>
          <Class-Path>.</Class-Path> <!-- HERE IS THE IMPORTANT BIT -->
        </manifestEntries>
      </archive>
    </configuration>
    <executions>
      <execution>
        <id>make-assembly</id> <!-- this is used for inheritance merges -->
        <phase>package</phase> <!-- append to the packaging phase. -->
        <goals>
          <goal>single</goal> <!-- goals == mojos -->
        </goals>
      </execution>
    </executions>
  </plugin>


 类似资料:
  • 我有独立的应用程序,它绑定在可执行的中。在可执行的清单文件中,有一个class-path条目,其中列出了所有依赖的(包括所有的日志实现jar)。这个可执行jar还包含文件。 使用这种结构,当我使用简单的命令运行应用程序时,应用程序在正确的日志记录下运行良好。但这里的主要问题是,要更改日志级别,需要打开jar文件,而我不能要求客户端这样做。所以我将放在了jar外部,但现在所有日志记录都发生在控制台上

  • jar是用“meta-inf”文件夹中的清单文件创建的。清单文件(为了查看目的删除了类路径中的一些jar条目): 文件夹结构: 我正在命令提示符下使用'java-jar application.jar mypkg.main'。 有人能告诉我是什么造成的错误和如何解决它吗?

  • 问题内容: 我在安装psycopg2时遇到问题。我尝试执行以下操作时收到以下错误pip install psycopg2: 但是问题出在我身上PATH; 它运行没有任何问题: 我尝试将径添加到文件中,并使用从其网站(http://initd.org/psycopg/)下载的源文件进行构建,然后收到以下错误消息! 但实际上是那里!!! 这些错误使我感到困惑。有人可以帮忙吗? 顺便说一下,我sudo所

  • 你好,我有一个奇怪的问题。我正在用eclipse打包一个应用程序,以生成一个可执行的jar文件,当我运行它时,会出现错误“error cant find main class[…]”。 当我从命令行示例运行同一个包时 java-jarapp.jar 程序启动。 奇怪的是,只有在Java 7环境中编译的应用程序才会出现错误。 如果我将项目设置为java 6,一切都正常。 我应该做什么来运行Java

  • 我有一个Spring Boot应用程序,当我从Intellij作为maven配置运行它时,它可以正常运行。 我有一个用属性文件定义的环境的项目结构。 等等。 我们的框架的工作方式是选择带有VM参数的env。例如或 错误是: 我尝试使用以下文件:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-e

  • 我想知道如何在Eclipse中的源代码包(即/src/resources/images/或/resources/images/)内部或外部的资源文件夹中创建一个具有资源(图片、PDF)的可运行JAR。目前,我的资源在我的eclipse项目的source文件夹中,但我也在包中的它自己的文件夹中尝试过。该程序在eclipse中构建和执行得很好,但当我将其导出为可运行的jar时,在桌面上运行时,我总是得