1

我一直在尝试将我的程序构建到一个可执行的 .jar 中。我的程序的功能是创建一个文本文件,将数据放入该文本文件,然后将文本文件上传到我的 ftp 服务器。

在 Eclipse 中,该程序完美运行,没有错误或问题。一旦我将它提取到一个可执行的 .jar 中,程序就不会显示我的 JOptionPane.showMessageDialog() 输出,并且会创建文本文件并将其上传到 ftp 服务器,但 ftp 服务器内的副本没有数据(我的本地机器上的副本有数据)。当我从命令提示符运行它以检查错误时,它运行完美。

发生故障的类:

import java.io.FileInputStream;
import java.io.IOException;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;

public class UploadKey {
    public void Send(String fileName) {
        FTPClient client = new FTPClient();
        FileInputStream fis = null;
        System.out.println("5");

        try {
            client.connect("host");
            client.login("username", "password");
            int replyCode = client.getReplyCode();
            System.out.println("6");
            if (!FTPReply.isPositiveCompletion(replyCode)) {
                client.disconnect();
                System.err.println("FTP server refused connection.");
                System.exit(1);
            }
            fis = new FileInputStream("C:\\" + fileName);
            System.out.println("7");
            client.setFileType(FTP.BINARY_FILE_TYPE);
            client.setFileTransferMode(FTP.BINARY_FILE_TYPE);
            System.out.println("8");
            client.storeFile(fileName, fis);
            System.out.println("9");
            fis.close();
            System.out.println("10");
            client.logout();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

感谢您的时间,

菲利普

编辑:已解决,.jar 被读取为 javaw.exe 而不是 java 存档。通过 Jarfix 应用程序 ( http://johann.loefflmann.net/en/software/jarfix/index.html ) 修复。谢谢大家的帮助。

4

0 回答 0