【问题标题】:Output file generated in Eclipse but not in jar file在 Eclipse 中生成但不在 jar 文件中的输出文件
【发布时间】:2012-08-14 00:24:33
【问题描述】:

我有一个简单的解析程序,它需要几个文件并将它们组合起来。然后它会生成一些输出文件到工作目录。当我在 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"); 
      } 

【问题讨论】:

  • 请考虑一些段落;这是一堵坚硬的文字墙。考虑删除不相关的部分(例如“我阅读了一篇博客,但没有帮助”)。
  • 抱歉,我只是想把所有信息都弄出来。
  • 这是我第一次在这里发帖,人们似乎不喜欢我原来的帖子,因为我没有发布足够的信息。我试过删除它。
  • 所以这个静态方法从一个文件读取并写入另一个文件。是不是有几种这样的方法,除了一种在 Eclipse 内外工作,而一种方法只在 Eclipse 中工作?当方法不起作用时,是否有任何消息(来自异常处理)?

标签: java eclipse


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2012-04-08
    • 2015-05-15
    • 2015-04-27
    • 2010-09-30
    • 1970-01-01
    • 2015-07-03
    相关资源
    最近更新 更多