1

我正在尝试config.properties从我的 JAR 本地目录中读取一个文件,该目录是从网站运行的。我尝试了一堆不同的代码,从 Streaming it 到获取类路径等。最后我现在尝试的是以下代码:

        FileInputStream f = new FileInputStream("./config.properties");
        if(f != null) {
            prop.load(f);
            db = prop.getProperty("database");
            dbuser = prop.getProperty("dbuser");
            dbpass = prop.getProperty("dbpass");
            host = prop.getProperty("host");
            iloc = prop.getProperty("iloc");
        }

这在从 Netbeans 内部测试和运行时完美评估,但是第二次我将它放在网络上并运行它,它不再找到配置文件,即使它是同一个目录中的同一个文件。我试过有./没有,还是一样的结果。

4

3 回答 3

1

你必须有一些绝对值或一些运行时参数。我们所做的是将应用程序主页作为系统属性。因此,当在 Windows 上启动 java 时它的 /app1 但在服务器上它的 /etc/app1

启动 java 或 javaw 时使用 -D

java -Dapp.home=/etc/app1 -Dapp.other=somevalue my.package.AppMain

然后在我们的应用程序中,我们有一个 FileUtils 类,它在静态 init 中读取它并为其提供一个静态 getter。

样本

public class FileUtils{
    private static File appHome = null;
    static{
        String home = System.getProperty("app.home");//-D that you specify or some standard that java has see javadoc
        if(home == null){
            //logger as needed
            home = "/app1";

        }
        appHome = new File(home);
    }


    public static File getAppHome(){
        return appHome;
        }


    ...

一个网站 - 运行 java 作为 Web 服务器/应用程序服务器也有一个文件系统。如果您无权访问它,那么您也无法编辑配置,对吗?如果您知道配置的路径但无法更改 java 命令,您可以执行以下操作:

建议 1 在您的开发系统上创建一个像 /dev/randome4343433Name.txt 这样的任意文件,如果该文件存在,您知道您在开发中,并使用该路径,否则转到服务器中的路径。

建议2 或者使用服务器上的路径。即使服务器是 linux 而 dev 是 windows,您也可以这样做,只需使用这个斜杠 / 并在 dev 驱动器中创建相同的文件系统,但不要在代码中提及驱动器号。所以如果在服务器上它位于 /etc/app1/config.txt 然后在本地驱动器上你开始创建一个 etc\app1 文件夹并将配置放在那里并且 uin 代码使用“/etc/app1/config.txt”

于 2013-04-04T21:52:21.767 回答
1

对于 java.applet.Applet 或 JApplet 使用 获取嵌入此小程序的文档的 URL。然后创建一个新的 URL 添加到 config.txt 的路径,打开 URL 上的输入流,您可以在客户端读取文件。

请记住,您所做的一切都是在客户端上进行的,因此除非您在服务器上有一个 jsp 页面并使用小程序中的某些安全性(密码)连接到该页面,否则您无法回信

于 2013-04-04T22:07:13.203 回答
0

在 commons-configurations jar 中有这个类:

PropertiesConfiguration cfg = new PropertiesConfiguration("filePath");

只需检查一下

于 2013-04-05T08:36:40.907 回答