次のプログラムはエラーをスローしています:
public class HelloWorld {
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
CLASSPATH C:\Program Files\Java\jdk1.6.0_18\bin\
Path C:\Program Files\Java\jdk1.6.0_18\bin\
JAVAHOME C:\Program Files\Java\jdk1.6.0_18\bin
根本原因を教えてください。
よくある理由をもう1つ見つけました。 EclipseのようなJavaを使用してパッケージ内にIDEファイルを作成すると、「package pkgName」のようなJavaファイルの上部にパッケージ名が表示されます。 。コマンドプロンプトからこのファイルを実行しようとすると、NoClassDefFoundErrorエラーが発生します。 Javaファイルからパッケージ名を削除し、コマンドプロンプトでコマンドを使用します。このために3時間無駄になりました。 -アブヒ
Exception in thread "main" Java.lang.NoClassDefFoundError
Javaが.class
ファイルを見つけようとする場所の1つが現在のディレクトリです。したがって、.class
ファイルがC:\Java
にある場合は、現在のディレクトリをそのディレクトリに変更する必要があります。
ディレクトリを変更するには、プロンプトで次のコマンドを入力し、Enterキーを押します。
cd c:\Java
この.
は、クラスパスがローカルディレクトリであることをJavaに伝えます。
Executing your program using this command should correct the problem:
Java -classpath . HelloWorld
パッケージがhelloworld
の場合、パッケージの親ディレクトリに移動してから実行します:
Java helloworld.HelloWorld
次のように実行します。
Java -jar HelloWorld.jar
これは、Windowsコマンドプロンプトから実行できるJavaコマンドの長い形式です。
"C:\Program Files\Java\jdk1.6.0_18\bin\javac.exe" -classpath "C:\Users\Scott\workspace\myproject" com\mycompany\myapp\HelloWorld.Java
"C:\Program Files\Java\jdk1.6.0_18\bin\Java.exe" -classpath "C:\Users\Scott\workspace\myproject" com.mycompany.myapp.HelloWorld
クラスパスの最後にスラッシュがないことに注意してください。 javac.exeコマンドは、ファイルが「.Java」で終わることを予期しています。 Java.exeコマンドは完全なクラス名を予期し、「。class」で終了しません。
これらのコマンドを簡素化する方法はいくつかあります。
クラスパス全体を入力する必要はありません(つまり、-classpath "。"を使用するだけです)。作業するディレクトリを入力します。
cd "C:\ Users\Scott\workspace\myproject \"
デフォルトパッケージを使用できます(作業ディレクトリにHelloWorld.Javaファイルディレクトリを配置し、Javaパッケージディレクティブを使用しないでください)
これらの変更を行う場合、次のように実行します(-classpath "。"を省略できる場合があります)。
cd "C:\Users\Scott\workspace\myproject\"
javac -classpath "." HelloWorld.Java
java -classpath "." HelloWorld
これが最終的に機能したものです。
`@echo off
set path=%path%;C:\Program Files\Java\jdk1.7.0_71\bin;
set classpath=C:\Program Files\Java\jdk1.7.0_71\lib;
cd <packageDirectoryName>
javac .\trainingPackage\HelloWorld.Java
cd ..
Java trainingPackage.HelloWorld
REM (Make sure you are on the parent directory of the PackageName and not inside the Packagedirectory when executing Java).`
NoClassDefFounErrorのjavadoc自体が良いスタート( here) であり、プロジェクトをクリーンにして再構築することをお勧めします。
私は同じ問題を抱えていて、「Build Main Project F11」で解決策を見つけました。 IDEは「プロジェクト構成」ダイアログの「ビルド」>「コンパイル」部分で「保存時にコンパイル」をオフにする「オプション」を表示しました。 「保存時にコンパイル」のチェックを外してから、通常の(私にとっては)「クリーンとビルド」を行うと、私にとってはうまくいきました。
フォルダ内のcmdプロンプトに次を入力します。
set classpath=%classpath%;.;
package com.beans;
public class Flower{
.......
}
packages :=> com.beans,
Java class Name:=> Flower.Java,
Folder structure (assuming):=> C:\com\beans\Flower.*(both .Java/.class exist here)
次に、それを実行する2つの方法があります。
1. Goto top Folder (here its C:\>),
then : C:> Java com.beans.Flower
2. Executing from innermost folder "beans" here (C:\com\beans:>),
then: C:\com\beans:> Java -cp ./../.. com.beans.Flower
同じ問題が上記の解決策を試みたが、どれも機能しなかった。 Javaコードを調べて、メイン関数が認識できなかったのは、それと(String)つまり初期コードの間にスペースがなかったためです。
public static void main(String[]args){
作業コード。
public static void main (String[]args){
私が誰かを助けたことを願っています。
CLASSPATH
は、HelloWorld
クラスの場所も知っている必要があります。
簡単に言えば、DOSプロンプトからCLASSPATH
およびjavac
コマンドを実行している場合は、Java
にドット.
(現在のディレクトリを意味する)を追加する必要があります。
CLASSPATH
変数には、Javaプログラムの.classファイルがあるディレクトリを含める必要があります。 「。」を含めることができますCLASSPATH
で、現在のディレクトリを含めることを示します。
set CLASSPATH=%CLASSPATH%;.
program.Javaが「src/mypkg/subpkg /」ディレクトリにある場合:
「src」ディレクトリに移動します
コンパイルするには、「javac mypkg/subpkg/Program.Java」を使用します
実行するには、「Java mypkg.subpkg.Program.class」を使用します
やってみて
javac Hello.Java
そして、コンパイラエラーが発生しない場合(プログラムにバグが表示されないため、実行すべきではありません)、次のように入力します
Java Hello
ここでの問題は、環境の設定とクラスファイルの実行です。 a。環境パスを設定するには、次のコマンドを実行します。set path = C:\ Program Files(x86)\ Java\jdk1.7.0\bin b。 com.test.TestJavaClassのようなパッケージからプログラムを実行します
コマンド:Java com.test.TestJavaClass
ここでの一般的な問題は、src/package/nameなどのパッケージ内から実行することです。 srcは含めないでください。パッケージ名で十分です。
簡単で簡単な解決策:exporting元のプロジェクトをZipファイルに削除元のプロジェクトディレクトリおよびインポート Zipファイルから戻されたプロジェクト。
IDE(Eclipseなど)を使用して作成したJavaファイルを「コンパイルして実行」する場合は、次のコマンドを実行します。
コンパイル:
javac Users\dhiraj01\workspace\Practice\src\PracticeLogic\Logics.Java
実行:
Java -classpath Users\dhiraj01\workspace\Practice\src\ PracticeLogic.Logics
パッケージ内にファイルがあるため、このエラーが発生しました。したがって、fooパッケージは次のように呼び出す必要がありました。
Java foo.HelloWorld
さまざまな順列と検索候補を試すのに4時間かかりました。
ついに、この投稿は機能しましたが、テストするために元のコードを変更するのに最適なソリューションではありませんでした。
set classpath=JDKbin;JDKlib;JREbin;JRElib;myClassLib;.
を含めるためにCLASSPATHを変更しようとしましたJava <packageName>.<className>
もJava ..\<packageName>.<className>
を試しましたどちらも機能しませんでした。
しかし、最初の応答だけで機能しました。本当にありがとうございました!!!
「もう1つの一般的な理由が見つかりました。EclipseなどのJavaを使用してパッケージ内にIDEファイルを作成すると、Javaファイルの上部にパッケージ名が表示されます。このファイルをコマンドプロンプトから実行しようとすると、NoClassDefFoundErrorエラーが発生します。Javaファイルからパッケージ名を削除し、コマンドプロンプト内のコマンドを使用します。アブヒ」
元のコードを変更せずに動作させる他の方法があるかどうか興味がありますか?ありがとうございました!
私はついにこれをApache Netbeansエディターのバグとして見つけました:
以下の手順でエラーを削除します。
新しいApache Netbeans(古いNetbeansではない)を使用している場合は、これが役立つことを願っています