CentOS 7.2 Linuxでは、正常にダウンロードしてインストールしました Oracle Java with:
# rpm -Uvh jdk-8u91-linux-x64.rpm
また、OpenJDKはすでにインストールされています。
# rpm -qa | grep -i jdk
Java-1.8.0-openjdk-headless-1.8.0.91-0.b14.el7_2.x86_64
Java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64
jdk1.8.0_91-1.8.0_91-fcs.x86_64
このコマンドを使用して、2つを切り替えることができます。
# alternatives --config Java
There are 2 programs which provide 'Java'.
Selection Command
-----------------------------------------------
* 1 /usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64/jre/bin/Java
+ 2 /usr/Java/jdk1.8.0_91/jre/bin/Java
Enter to keep the current selection[+], or type selection number:
そして、次のバージョンを参照してください。
# Java -version
Java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
# javac -version
javac 1.8.0_91
今私の問題にお願いします-
TheClassName.Java
という名前の単純なJavaファイルを作成します:
package thepackagename;
public class TheClassName {
public static final void main(String[] args) {
System.out.println("Hello World!");
}
}
javac TheClassName.Java
(同じディレクトリにTheClassName.class
ファイルを生成します)で正常にコンパイルした後、残念ながら実行できません。
# Java -cp . thepackagename.TheClassName
Error: Could not find or load main class thepackagename.TheClassName
ここで別の試み:
# export Java_HOME=/usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64/jre
# $Java_HOME/bin/Java -cp . thepackagename.TheClassName
Error: Could not find or load main class thepackagename.TheClassName
別の環境変数を設定しても、次のいずれにも役立ちません。
# export CLASSPATH=.
Windows 7での同様のコマンドはうまく機能し、そこからLinuxにもTheClassName.class
ファイルをコピーしてみました。
上記のように、私はすでにほとんどの提案を試したので、助けてください。この質問を重複としてマークすることを提案しないでください。
SELINUXはオフ(SELINUX=disabled
)で、サーバーは数週間前にインストールされ、MySQL/PostgreSQL/Apache/WordPressでLAMPとして(エラーなしで)機能します。
更新:
はい、クラスファイルをthepackagename
dirの下に移動する必要があり、それで機能します。
# ls thepackagename
TheClassName.class
# Java -cp . thepackagename.TheClassName
Hello World!
test.jar
ファイルを作成することもできますが、それでも機能します。
# Zip -r test.jar thepackagename
adding: thepackagename/ (stored 0%)
adding: thepackagename/TheClassName.class (deflated 31%)
# Java -cp test.jar thepackagename.TheClassName
Hello World!
クラスがパッケージに含まれている場合:
package thepackagename;
public class TheClassName {
public static final void main(String[] args) {
System.out.println("Hello World!");
}
}
次に、間違ったディレクトリから呼び出すと、次のようになります。
Error: Could not find or load main class thepackagename.TheClassName
完全修飾名で呼び出す必要があります。
Java -classpath . thepackagename.TheClassName
また、このコマンドは、thepackagename
ディレクトリが存在する同じディレクトリから呼び出す必要があります。つまり、thepackagename
という名前の新しいディレクトリを作成し、そこにTheClassName.class
を移動してから、thepackagename
ディレクトリの親ディレクトリから上記のコマンドを実行する必要があります。