我正在尝试从我的JAR本地目录中读取config.properties
文件,该文件从网站运行。我尝试了一些不同的代码,从流式传输到获取类路径,等等。最后我正在尝试的是以下代码:
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内部进行测试和运行时完美评估,但第二次我把它放在网上并运行它,它不再找到配置文件,即使它是同一目录中的同一文件。我已尝试使用./
而没有,但结果仍然相同。
答案 0 :(得分:1)
你必须有一些绝对或一些运行时参数。我们所做的是将app home作为系统属性。因此当在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,你也可以这样做,只需使用这个斜杠/并在开发驱动器中创建相同的文件系统,但不要在代码中提及驱动器号。所以,如果在服务器上的/etc/app1/config.txt然后在驱动器本地,你开始创建一个etc \ app1文件夹并将配置放在那里,你的代码使用“/etc/app1/config.txt”
答案 1 :(得分:1)
对于java.applet.Applet或JApplet,使用获取嵌入此applet的文档的URL。然后创建一个新的URL添加config.txt的路径,打开URL上的输入流,你可以在客户端上读取该文件。
记住你所做的一切都在客户端,所以你不能回写,除非你在服务器上有一个jsp页面,并使用applet中的一些安全性(密码)连接到该页面
答案 2 :(得分:0)
在commons-configurations jar中有这个类:
PropertiesConfiguration cfg = new PropertiesConfiguration(“filePath”);
检查一下