目录结构是有两个文件在同一个目录里
一个是go.jar,一个是config.xml
go.jar的入口函数是里面默认包里的go.class里的我在go.class里有这样的代码: 
Document document = new SAXReader().read(go.class.getClassLoader().getResourceAsStream("config.xml"));
结果是
Nested exception: java.net.MalformedURLException
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
        at java.net.URL.<init>(Unknown Source)
如果用"./config.xml"和"../config.xml"都是一样的.而以前用new File("./config.xml")居然可以读到,但是只能在WINDOWS下,LINUX下就不行了我需要一种能在WINDOWS和LINUX下都能读取的方法

解决方案 »

  1.   

    linux的我不清楚.../_\
    windows上你是不是double click那個jar包啊,這樣的話你程序context的"."就意味着你jar包的當前目錄,如果你在cmd中以(java,javac等沒有加入到%path%中)java的存放目錄以java -jar來運行你的jar包,那麼"."就意味是java.exe的目錄,可以以config.xml的絕對路徑來讀取吧
    obj.getClass().getProtectionDomain().getCodeSource().getLocation().getPath()
      

  2.   

    linux的读取命令和windows不一样,要写层叠式的路径+读取命令,而且你的文件权限也要达到读的标准,root就不用不说了
      

  3.   

    一种方法是你在程序中打印  System.getproperty("user.dir");看在哪个目录下面
      

  4.   

    go.class.getClassLoader().getResourceAsStream("config.xml")这个语句执行成功了没有?将这个文件config.xml 放在一个classpath的路径中,然后用go.class.getClassLoader().getResourceAsStream("/config.xml")应该可以在linux或windows成功读到数据。
      

  5.   

    不行的,在我所的那種情況就是打印jdk的dir
      

  6.   

    jar包里调用go.class.getClassLoader().getResourceAsStream("config.xml")会返回空吧?
    看看这篇文章:
    http://blog.csdn.net/sunyujia/archive/2008/09/21/2957481.aspx
      

  7.   

    如果要读取外部文件系统, 需要在路径前加入 '/'
    如/config.xml
    /./config.xml
    /../config.xml
    /config/config.xml
      

  8.   

    大家好,我是搂住,我后还是用笨办法取的JAR包的绝对路径,然后用字符串处理把后面的文件名换成配置文件,因为我试验了很多,只有这个能比较好在多种操作系统上都通过
      

  9.   

    直接用 new File("config.xml") 行么?
      

  10.   

    帮你top ones!没有办法,我没以遇到过,也不从知道如何尝试!