2014-10-01 57 views
0

我正在使用Java创建一个包含一些数据的文件。但是我遇到了一个问题。事实上,当我从Eclipse运行时,我成功创建了一个文件并在其中写入“hello”。但是,当我将这些代码导出到jar文件中时,我尝试在命令行(java -jar myappli.jar)中执行它,则不会创建该文件。我不明白为什么。用Eclipse创建的文件但不能用命令行创建的文件

这是我的java文件,很简单。

如果您有任何答案,我会很乐意拥有它:) 谢谢。

package testjar; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.PrintStream; 

public class Main { 
public static void main(String[] args) 
{ 
    FileOutputStream f = null; 
    try 
    { 
     f = new FileOutputStream(new File("Export_XML.xml")); 
     System.setOut(new PrintStream(f)); 
     System.out.println("hello"); 
    } 
    catch(java.io.IOException e) 
    { 
     e.printStackTrace(); 
    } 
    finally 
    { 
     try 
     { 
       if(f!=null) 
         f.close(); 
     } 
     catch(IOException e) {e.printStackTrace();} 
    } 
} 
} 
+2

在命令行上运行它时是否收到异常?你如何运行它?任何编译警告? – Burkhard 2014-10-01 16:35:13

+0

你是从命令行运行它吗?如果没有,你应该这样做。如果是这样,你会得到什么样的错误信息? – ControlAltDel 2014-10-01 16:36:34

回答

0

如果你没有收到异常,它很可能被创建。不同的是工作目录。由于在调用新文件时没有指定绝对路径,因此JVM将在JVM的当前工作目录中创建文件。当你从jar中运行时,这与你从Eclipse运行时的情况可能会有所不同。

0

我看不出有什么具体错误,但尝试使new File('Export_XML.xml')到它自己的变量,然后做xmlFile.createNewFile();另外,我不鼓励使用如System.setOut()你的程序是不是Java的只是部分使用它。