ファイルをコピーして別の場所に貼り付けるプログラムをいくつかのApache IOメソッドを使用して作成しようとしています。 Eclipseでは完全に動作しますが、JARにエクスポートすると、JARは実行されません。 "Past Filepaths.txt"ファイルはプロジェクトフォルダにあります。私がタスクマネージャーを見ると、それが消える前に数秒間起動することがわかります。私はこれをコメントアウトした場合、jarが実行されないif文
if (filePaths.length == 2){
source.setText(filePaths[0]);
dest.setText(filePaths[1]);
}
JARの実行を:私は、単一のif
の文にそれを絞り込むました。私がしなければ、それはしません。
これは、スクリプトの種類として〜30分で作成した非常に粗いコードです。ファイルを移動するのに役立ちます。少し荒く見える場合は、お詫び申し上げます。
私の完全なコード:
public class Main {
private JFrame jf = new JFrame();
private JTextField source, dest;
private String sourcePath, destPath;
public Main() {
String[] filePaths = null;
try {
filePaths = FileUtils.readFileToString(new File("Past Filepaths.txt"), "ASCII").split("~");
} catch (IOException e1) {
e1.printStackTrace();
}
JPanel panel = new JPanel();
JButton jButton = new JButton("Update Files");
source = new JTextField("", 40);
dest = new JTextField("", 40);
if (filePaths.length == 2){
source.setText(filePaths[0]);
dest.setText(filePaths[1]);
}
jButton.addActionListener((e) -> {
updateVars();
updateFiles();
});
jf.setSize(500, 200);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jf.setLocationRelativeTo(null);
jf.setResizable(false);
jf.add(panel);
panel.add(new JLabel("Source"));
panel.add(source);
panel.add(new JLabel("Destination"));
panel.add(dest);
panel.add(jButton);
jf.setVisible(true);
}
private void updateVars(){
sourcePath = source.getText();
destPath = dest.getText();
}
private void updateFiles(){
if(new File(sourcePath).exists() == false){
JOptionPane.showMessageDialog(jf, sourcePath + " is not a valid file path!");
return;
}
if(new File(destPath).exists() == false){
JOptionPane.showMessageDialog(jf, destPath + " is not a valid file path!");
return;
}
try {
FileUtils.copyDirectory(new File(sourcePath), new File(destPath));
} catch (IOException e) {
e.printStackTrace();
}
File pastFiles = new File("Past Filepaths.txt");
try{
FileUtils.write(pastFiles, sourcePath + "~", "ASCII");
FileUtils.write(pastFiles, destPath, "ASCII", true);
}catch(Exception e){
e.printStackTrace();
}
}
実行中のディレクトリに '過去のファイルパス.txt'がありますか?それがあなたのものでなければ、あなたが描いている振る舞いとまったく同じになるでしょう。 –
@DavidWallaceはい。それはプロジェクトフォルダにあります。 –
'java -jar/path/to/jarfile'でコマンドラインからjarを起動できますか?それは役に立つ情報を与えるでしょう。 –