2

ネットから簡単なJavaの例をダウンロードしました。以下のコードをコンパイルしようとしています。

package ArrayList;
import java.util.ArrayList;

public class SimpleArrayListExample {

    public static void main(String[] args) {

        //create an ArrayList object
        ArrayList<String> arrayList = new ArrayList<String>();

        /*
        Add elements to Arraylist using
        boolean add(Object o) method. It returns true as a general behavior
        of Collection.add method. The specified object is appended at the end
        of the ArrayList.
         */
        arrayList.add("1");
        arrayList.add("2");
        arrayList.add("3");

        /*
        Use get method of Java ArrayList class to display elements of ArrayList.
        Object get(int index) returns and element at the specified index in
        the ArrayList
         */
        System.out.println("Getting elements of ArrayList");
        System.out.println(arrayList.get(0));
        System.out.println(arrayList.get(1));
        System.out.println(arrayList.get(2));
    }
}

私はあなたの提案に従ってプログラムを編集しました、そして私はコンパイルすることができて、そして私はクラスファイルを手に入れました。

java SimpleArrayListExample.java

今私はを使用してファイルを実行しようとしています

java -classpath . ArrayList.SimpleArrayListExample.java

スレッド"main"java.lang.NoClassDefFoundErrorの例外

グーグルで検索したところ、-classpathを指定する必要があることがわかりました。

http://www.tech-recipes.com/rx/826/java-exception-in-thread-main-javalangnoclassdeffounderror/ これは問題を解決していないようです。

4

6 に答える 6

3

コンパイラは、コレクションに含まれる型が宣言されていないことを警告しています。ジェネリックを使用して、この警告を排除できます

ArrayList<String> arrayList = new ArrayList<String>();

編集:

パッケージ構造に問題があります。はSimpleArrayListExampleと呼ばれるディレクトリにありませんArrayList。修正するには

  • SimpleArrayListExample.javaと呼ばれる新しいディレクトリに移動しArrayListます。
  • 以下を使用してコンパイルします:-javac ArrayList/SimpleArrayListExample.java
  • 走る:java ArrayList.SimpleArrayListExample

パッケージ名は通常小文字を使用することに注意してください。

于 2013-01-23T21:40:34.603 に答える
2

ジェネリックを使用して、この警告を回避できます。

public static void main(String[] args) {

    //create an ArrayList object
    ArrayList<String> arrayList = new ArrayList<String>();

    //...
}

ジェネリックを使用したくない場合は、警告を抑制することもできます。

@SuppressWarnings("unchecked")
public static void main(String[] args) {
    //...
}
于 2013-01-23T21:40:42.623 に答える
2

コレクションのジェネリック型を指定してコレクションを制限するか、コレクション型を安全にします(コンパイル時のみ)。警告は表示されなくなります 。

 ArrayList<String> arrayList = new ArrayList<String>();

型推論の導入によるJava7から

 ArrayList<String> arrayList = new ArrayList<>();
于 2013-01-23T21:40:44.537 に答える
2

これはコンパイルエラーではありません。むしろ、それはコンパイル警告です。これは、引き続きコンパイルされることを意味しますが、警告を修正することをお勧めします。

この場合、ArrayListジェネリック型が不足しているためです。ArrayList<String>文字列を追加するだけなので、代わりに宣言する必要があります。

于 2013-01-23T21:41:22.447 に答える
1

それをArrayList<String>

これはジェネリックコレクションと呼ばれ、そのタイプのオブジェクトを格納および取得するために、タイプでパラメーター化できるコレクションであることを意味します。

したがって、格納するように指定するとString、コンパイラはそれが返されることも認識しますString。何も指定しない場合、基本的にはにフォールバックしますObject。つまり、何でも(非スカラー)格納し、何でも取得できます(これにより、コンパイラーがジャンプします)。

于 2013-01-23T21:40:01.050 に答える
1

これはエラーではなく、警告です。

これは、ジェネリック型なしでArrayListを使用していることが原因です。

ジェネリックについて詳しくは、http://docs.oracle.com/javase/tutorial/java/generics/をご覧ください。

于 2013-01-23T21:42:28.800 に答える