日期:2014-05-20  浏览次数:20776 次

java文件jar运行在windows和linux下当前路径不一样
Java code

import java.io.*;
public class File10
{
    public static void main(String[] args) 
    {
        try
        {
        File file=new File("Text.txt");
        PrintWriter out=new PrintWriter(new BufferedWriter(new FileWriter(file)));//在当前路径创建文件输出对象
        out.println("1");
        out.close();
        }
        catch(IOException e)
        {

        }

    }
}


这段代码在windows下和linux下用终端编译运行都没问题,路径正常,比如linux上我在/home/yh/java/io下编译运行就直接在此路径上产生一个Text.txt 的文件,在windows上E:\java\io上编译运行就在此路径上生成文件,但是我用jar命令把这个程序打包成可执行得jar时候,生成文件得路径就开始有变化了,在linux不管我在哪个路径下双击执行这个jar,文件生成得路径总在/home/yh(我的主目录),而在windows下正常,jar在什么路径,文件就生成在哪里。
问题出在哪里?

------解决方案--------------------
同胞啊~~~~~我也正困惑与这个问题。楼主的问题和我如出一辙。我查找的规律来看,当双击运行jar的时候,你获取的当前目录为jar所在目录的父层目录。但是在windows下,以及在linux下用java -jar命令运行的时候都没有问题。这个应该是系统的问题。我也没找到很好的解决办法。目前的办法是,在java下,编写shell脚本,双击脚本来运行程序。这样就可以获得java -jar xxx.jar同样的路径效果。如果楼主找到了根本的原因或者解决办法,还烦请和我交流一下。
------解决方案--------------------
我怀疑是系统变量的原因
猜的