0

我有一个简单的解析程序,它需要几个文件并将它们组合起来。然后它会生成一些输出文件到工作目录。当我在 Eclipse 中运行这个程序时,它会生成所有需要的输出文件。但是,当我使用 eclipse 中生成的 jar 运行它时,它只会创建三个输出文件中的两个。这让我觉得 jar 文件的生成方式有问题,但似乎找不到任何答案。

我试过更新一些java,我相信它是用java 5编写的。我只是将 Vectors 更改为 ArrayLists,将 FileOutputStream 更改为 FileWriter。

我必须下载 javax.mail 以获取所需的库并将这些 jar 文件添加到我在 Eclipse 中使用的 java6 库中。我试过删除类并生成新类。我试图检查 jar 文件的权限以确保我可以访问它。我想我只是不确定从哪里开始。

我还尝试将其打包为 jar 文件而不是可运行的 jar 文件,因为它为我提供了更多关于包含哪些内容的选项。但是,即使它是可执行文件,我也无法运行这种类型的 jar 文件。我已经多次重新创建 jar 文件,但没有任何运气。

UTF-8 在 jar 文件中无法正确显示,但在 eclipse 中却很好,存在很多问题。然而,他们的 jar 文件正在生成文本文件,而我的只是没有生成文本文件。

更新:有趣的是,如果我将代码块移动到它自己的类并将其作为单独的 jar 运行,它将起作用。所以现在的解决方案是拥有两个 jar 文件。

这是未生成文件的代码:

private static void parseCRNOnly() { 
try { 
    //file to write to 
    File new_file = new File("CRNOnlyClean.txt"); 
    FileWriter out = new FileWriter(new_file); 

    //file to read from 
    File file = new File("CRNOnly.txt"); 
    FileReader reader = new FileReader(file); 
    BufferedReader buf = new BufferedReader(reader); 

    try{ 
        String str; 
        String temp = "\r"; 
        String nl = "\r\n"; 
        String tab = "\t"; 

        str = buf.readLine(); 

        while (str != null && !str.isEmpty()) { 
            StringTokenizer tokenizer = new StringTokenizer(str," \t"); 
            int column = 0; 
            while(tokenizer.hasMoreTokens()) { 
                column++; 
                temp = tokenizer.nextToken(); 
                if(column == 8){ 
                    break; 
                } 
            out.write(temp); 
            out.write(tab); 
         } 
         out.write(nl); 

         str = buf.readLine(); 
         } 

         out.close(); 
      } catch(IOException e0){ 
            System.out.println("Error Reading From CRNOnly.txt"); 
            JOptionPane.showMessageDialog(null, "Error Reading From CRNOnly.txt"); 
        } 
      } catch(FileNotFoundException e1){ 
            System.out.println("File CRNOnly.txt Not Found"); 
            JOptionPane.showMessageDialog(null, "File CRNOnly.txt Not Found"); 
      } catch (IOException e) { 
            System.out.println("Error Reading from FileWriter"); 
            JOptionPane.showMessageDialog(null, "Error Reading from FileWriter"); 
      } 
4

1 回答 1

0

出于某种原因,jar 文件不包括我必须从 javax.mail 添加的一些旧库,所以我尝试使用 netbeans 制作一个 jar 文件,它可以工作。Netbeans 也没有将 javax.mail 库打包到 jar 文件中,而是将它们与 jar 文件一起包含在一个文件中。因此,要使用 jar 文件,该文件也必须在目录中。

于 2012-08-06T15:12:52.420 回答