0

次の Java ファイルを作成しました。

import java.awt.*;

public class Text {
    public static void main(String[] args) {
        String str = "I AM A SENTENCE";
        String[] lines = wrap(str, 5);
        for (int i=0;i<lines.length;i++) {
            if (lines[i] != null) System.out.println(lines[i]);
        }
        Font myFont = new Font("Impact", Font.BOLD, 36);
        System.out.println(String.valueOf(charToPixel(str, myFont)));
    }
    public static String[] wrap(String str, int w) {
        char[] string = str.toCharArray();
        System.out.println("string.length: " + String.valueOf(string.length));
        int charCounter = 0;
        String[] line = new String[20];
        String work = "";
        int x = 0;
        for (int i=0;i<string.length;i++) {
            charCounter++;
            System.out.println("charCounter: " + String.valueOf(charCounter));
            System.out.println("i: " + string[i]);
            if (charCounter > w) {
                charCounter = 0;
                System.out.println(String.valueOf(x));
                line[x] = work;
                x++;
                work = "";
                i--;
            }
            else {
                work += string[i];
            }
        }
        line[x] = work;
        return line;
    }
}

ここで、String[] を受け取り、Graphics.drawString() を使用して 1 つずつ出力するために使用する単純なアプレットも作成しました。デフォルトのマニフェストと以前のクラス ファイルを使用して .jar ファイルを作成しました。クラス ファイルのディレクトリは、jar 内では次のとおりです: Dennis\Text.class。jar を CLASSPATH に追加しました。次のように import ステートメントを使用しました。import Dennis.*;

ただし、アプレットをコンパイルすると (Text.class は完全にコンパイルされています)、次のコンパイル エラーが発生します。

不正なクラス ファイル: B:\Apps\Java\JDK\lib\Text.jar(Dennis/Text.class) クラス ファイルに不正なクラスが含まれています: テキスト 削除するか、クラスパスの正しいサブディレクトリにあることを確認してください。

私が知る限り、すべてを適切な場所に配置し、インポート ステートメントは成功しました。

それで、私は何を間違っていますか?

4

1 に答える 1

2

クラス ファイルのディレクトリは、jar 内では次のとおりです: Dennis\Text.class。

そうであってはなりません。これはどのパッケージにも含まれていないため、jar ファイルのルート ディレクトリ内に直接配置する必要があります。理想的は、パッケージ内に配置し ( DennisJava 命名規則に違反する ではありません)、jar ファイル構造をパッケージ構造と一致させます。

于 2012-10-01T18:37:19.333 に答える