添加属性文件以构建可运行jar的路径

时间:2013-10-17 10:32:56

标签: java classpath runnable properties-file

是否可以在runnable jar文件的类路径中添加一些属性文件? 我尝试了这些解决方案:

  1. 使用以下命令运行可执行文件:

    java -cp ../prop_dir/prop1.properties;../prop_dir/prop2.properties -jar MyRunnableJar.jar

  2. 添加到MANIFEST FILE(在Class-Path部分中)

    ../ prop_dir / prop1.properties ../ prop_dir / prop1.properties

  3. 但它们都不起作用。

    正在运行的目录的架构如下

    +
    + MyRunnableJar.jar
    + prop_dir/
       + prop1.properties
       + prop2.properties
    

    非常感谢,

    丹尼尔

    修改

    当我执行以下行

    System.out.println(System.getProperty("java.class.path"));
    

    我在我的控制台中获取

    MyRunnableJar.jar
    

7 个答案:

答案 0 :(得分:4)

为了解决这个问题,我使用了一种解决方法:运行runnable jar而不是运行主类,我将jar添加到类路径中。

我使用的命令如下:

java -classpath .;MyRunnableJar.jar;prop_dir; my.package.MyClass

答案 1 :(得分:1)

它应该像清单中的prop_dir/prop1.properties prop_dir/prop1.properties一样吗?

另请查看此问题:Java -jar : access external configuration file

答案 2 :(得分:0)

您必须在类文件中引用相对于.jar文件位置的.properties文件。类路径分隔符对于Windows(分号)和Unix环境是不同的 (结肠)。

适用于Windows

java -classpath。; prop_dir; -jar Runnable.jar(在你的类文件中,属性文件应该由类路径中的相对URl访问说“prop_dir / prop1.properties”)

对于Unix env

java -classpath。:prop_dir:-jar Runnable.jar(在你的类文件中,属性文件应该由来自类路径的相对URl访问说“prop_dir / prop1.properties”)

代码:

enter image description here

输出:

enter image description here

答案 3 :(得分:0)

添加。到MANIFEST.MF的Class-Path并将属性文件放在与runnable jar相同的级别对我有用。

java -jar MyExec.jar

MANIFEST.MF
Manifest-Version: 1.0
Main-Class: com.test.MyMain
Class-Path: . lib/MyDependent1.jar lib/MyDependent2.jar

加载属性文件的代码段应该像

ResourceBundle properties = ResourceBundle.getBundle("MyExec");

答案 4 :(得分:0)

您只需将属性文件放在META-INF文件夹中即可。

+META-INF
 +properties_dir
  +Test.properties

答案 5 :(得分:0)

对我有用的是在jar中添加属性文件并将该jar放在MANIFEST文件的classpath中(在Class-Path部分下)。

当我在-cp选项下传递相同的jar时,不知何故它没有用。似乎总是从MANIFEST文件中获取runnable jar的类路径。

答案 6 :(得分:0)

我有更好的方法来解决这个问题

我的项目结构是:-You can see there is no property file in this project structure

package com.main;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Run {

    public static void main(String[] args) throws IOException {
        Properties prop = new Properties();
        ClassLoader loader = Thread.currentThread().getContextClassLoader();           
        InputStream stream = loader.getResourceAsStream("config.properties");
        prop.load(stream);
        System.out.println(prop.getProperty("name"));

    }

}

现在将属性文件放在导出可运行jar文件的同一folder中。

对于这种方法,您不需要在eclipse中创建属性文件,只需要创建一个属性文件即可在其中导出可运行的jar,并记住不要提供属性文件的路径,只需写像这样的属性文件名

InputStream stream = loader.getResourceAsStream("config.properties");