※ ChatGPTを利用し、要約された質問です(原文:java 実行コマンドについて)
java実行コマンドの相対パス指定について
このQ&Aのポイント
java実行コマンドでは相対パスで実行ファイルを指定することはできないのか?
java実行コマンドでは実行ファイルの相対パス指定ができないため、-classpathオプションを使用する必要がある
javacコマンドでは相対パスでコンパイルできるが、javaコマンドでは実行ファイル指定には絶対パスか-classpathオプションが必要
java の実行コマンドについての質問です。java実行コマンドでは実行したいファイルを相対パスで指定できないのでしょうか?
具体的には、
現在、実行したいプログラムは
~/program/sample/Test.class
となっています。
カレントディレクトリは~/programで、次のようなコマンドを行いました。
~/program$ java sample/Test
すると
Exception in thread "main" java.lang.NoClassDefFoundError: sample/Test (wrongname: Test)
という例外が出ました。
~/program$ java -classpath sample Test
を行えば実行できるのですが、java実行コマンドでは相対パスで実行ファイルを指定することはできないのでしょうか?
(javacコマンドでは相対パスでコンパイルできる、つまりコンパイルしたいファイルが~/program/sample/Test.javaならば
~/program$ javac sample/Test.java
でコンパイルできるので、これの類似でjavaコマンドでも相対パスで実行できるのではないかと考えたのですが。)
お礼
上の場合、このプログラムのワーキングディレクトリがsampleなので、そこから実行しなければならないのですね。 programディレクトリから実行する場合は、programディレクトリがワーキングディレクトリとなるため、実行するクラスを完全修飾名で指定しなければならないということですね。従ってTestをsampleパッケージで定義しなければならないわけですね。 パッケージについて勉強不足であることが分かったので、パッケージについて勉強します。 ご回答をありがとうございました。