0

ユーザーが実行する Java クラス プログラムの名前の直後に 2 つの引数を入力すると、コマンド ラインからコンパイルして実行できる IDE (NetBeans や Eclipse など) からプログラムを作成することは可能ですか?

その場合、引数の 1 つとして絶対パスを渡すことはできますか?

その場合 (ソース ファイルまたは宛先ファイルに Big Sky File.txt のように複数語の記述子がある場合)、それを引数として渡すにはどうすればよいでしょうか?

これが多くの質問であることは承知していますが、私は高低を検索しましたが、これらのトピックのいずれについても、表面をなぞるようなものは何もないようです.

@Code-Guru、@thkala、これが私が試みているコードです(フォーマットに少し時間がかかりました):

編集:@Code-Guru、問題のある行を追加しました(どのように見逃したのかわかりません)。

次の編集: @ Code-Guru、これは CopyFile.java から更新されたファイルの内容と、結果のエラー メッセージです。

import java.io.*;

public class CopyFile
{
 public static void main(String args[]) throws IOException, NullPointerException
{ 
int num; 
FileInputStream fileIn; 
FileOutputStream fileOut; 
try
{ 
  // open input file 
  try
  { 
    fileIn = new FileInputStream(args[0]); 
  }

  catch(FileNotFoundException e)
  { 
  System.out.println("Input File Not Found."); 
  return; 
  }

  // open output file 
  try
  { 
    fileOut = new FileOutputStream(args[1]); 
  }

  catch(FileNotFoundException e)
  { 
    System.out.println("Error Opening Output File.");
    return;
  }

}

catch(ArrayIndexOutOfBoundsException e)
{
  System.out.println("Incorrect argument use:java CopyFile Source Destination"); 
  return;
} 

// Copy File 
try
{ 
  do
  {
    num = fileIn.read();
    if(num != -1)
    {
      fileOut.write(num);
    }
  }

  while(num != -1); 
}

catch(IOException e)
{
  System.out.println("File Error: Could not copy file."); 
}
fileIn.close();
fileOut.close();
}
}

コマンドプロンプトから受け取ったエラーメッセージは次のとおりです。

エラー: メイン クラスの CopyFile が見つからないか、読み込めませんでした

4

2 に答える 2

2

ユーザーが実行する Java クラス プログラムの名前の直後に 2 つの引数を入力すると、コマンド ラインからコンパイルして実行できる IDE (NetBeans や Eclipse など) からプログラムを作成することは可能ですか?

はい、可能です。

その場合、引数の 1 つとして絶対パスを渡すことはできますか?

間違いなく -サイズが特定の (通常はシステム定義の) 制限を超えない限り、任意の文字列を引数として渡すことができます。

その場合 (ソース ファイルまたは宛先ファイルに Big Sky File.txt のように複数語の記述子がある場合)、それを引数として渡すにはどうすればよいでしょうか?

通常、スペースや特殊文字などを含む引数は、Java プログラムではなく、呼び出しシェルによって処理されます。使用しているコマンド ライン シェルでそのような引数を適切に引用する方法については、ドキュメントを参照してください。

于 2013-03-11T02:31:28.707 に答える
1

答えは、エラー メッセージの次の部分にあります。

(wrong name: copyfile/CopyFile)

つまり、クラスの完全修飾名はcopyfile.CopyFile. Java では、パッケージ レイアウトがディスク上のフォルダー レイアウトと一致している必要があります。

したがって、クラス ファイルは という名前のサブフォルダーにある必要がありcopyfile、それから として呼び出されるjava copyfile.CopyFileか、コードから宣言を削除して、名前のない既定のパッケージでクラスをコンパイルできますpackage copyfile;(その行は表示されていませんが、そこにある必要があります)。 .

詳細: http://www.jarticles.com/package/package_eng.html

于 2013-03-11T12:27:14.630 に答える