0

2 つのクラスを含むプロジェクトをコンパイルしようとしています (それ以上になることもあります)。2 つのクラスは、作業中の同じディレクトリにあります。次のコマンドを実行します。

C:\Users\Me\Java>javac -d クラス -cp クラス *.java

パッケージファイル: cweek.java & nweek.java

package Hello;

public class cweek
{

   public static void main(String[] args)
   {
      nweek.printmeth();
   }
}

nweek.java

 package Hello;

    public class nweek 
    {
        public static void printmeth() 
        {
            System.out.println("I'm here");
        }

    }

ここで、C:\Users\Me\Java\Classes\Hello に移動し、「java cweek」コマンドを試行すると、次のエラーが発生します。

    Exception in thread "main" java.lang.NoClassDefFoundError: cweek (wrong name: Hello/cweek)

    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.defineClass(Unknown Source)
    at java.net.URLClassLoader.access$100(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
4

2 に答える 2

2

パッケージ構造を含むディレクトリから、完全修飾クラス名を使用してクラスを実行する必要があります。

> C:\Users\Me\Java\Classes: java Hello.cweek

ところで、命名規則が交換されました。パッケージ名は小文字で、クラス名は大文字で始める必要があります。だから、そうあるべきだった -hello.CWeek

于 2013-09-14T22:21:23.223 に答える