• 締切済み

interfaceとpackage

パッケージつきのインターフェイスで初期化した文字列を別のJavaファイルで参照したいのですが、コンパイルエラーがでてうまくできません。 インターフェイス(TestI.java) package MyApplet; interface TestI{ String id="bug"; } Javaファイル(TestA.java) package MyApplet; public class TestA{ public static void main(String args[]){ System.out.println(TestI.id); } } 初歩的な質問ですがよろしくお願いします 。

  • arusu
  • お礼率8% (27/308)
  • Java
  • 回答数3
  • ありがとう数2

みんなの回答

  • Harry_
  • ベストアンサー率55% (36/65)
回答No.3

ranxさん、以前はお世話になりました。(エンコーディングの質問で) ちょっとつっこませてもらいます。 インターフェース内のフィールドは、 暗黙に、public static final です。 だから、質問のコードはどこも間違ってないと 思います。 別な問題じゃないですか。 パッケージとディレクトリがあってないとか。 arusu さん、コンパイルエラーはどんなのですか?

arusu
質問者

お礼

みなさんありがとうございます。 親ディレクトリからコンパイルを指定すれば無事コンパイルできました。どうもお騒がせしました。

  • ranx
  • ベストアンサー率24% (357/1463)
回答No.2

インタフェースの内容を次のように修正して下さい。 interface TestI{ static final String id="bug"; } パッケージが同じですからこれで良いと思いますが、 場合によってはpublic宣言子も必要でしょう。 static final ですが、詳細は参考書に譲るとして、 インタフェースの場合は必ず必要になります。

  • mrt136
  • ベストアンサー率35% (33/92)
回答No.1

どうも、Interface の使い方を勘違いされているようです。 もう一度、Java の入門書等を読まれた方がいいかもしれませんね。 まず、Interface には実態が無いので、TestI.id と言う指定は出来ません。 Interface を implement するクラスを実装して、それを使用します。 それから、static なクラス(又はメンバ)でない限り、クラス名.メンバと言う指定も 出来ないですよ。 後、この様な質問をされる際ですが、エラーメッセージをそのまま書き出す 様にしないと、推測の域を出ない場合がありますので、エラーメッセージは 書くようにしましょう。 がんばってください。

関連するQ&A

  • java 実行できない

    javaで public class HelloWorld{ public static void main(String[] args){ System.out.println("Hello World!"); } } のようなプログラムをかいて、コンパイルして、実行しようとすると エラー: メイン・メソッドがクラスStringで見つかりません。次のようにメイン・メソッドを定義してください。 public static void main(String[] args) またはJavaFXアプリケーション・クラスはjavafx.application.Applicationを拡張する必要がありま というエラーがでます。コンパイルはできます。jdkは1.8.0_25を使っています。

  • packageについて

    以下のことでどうしてもエラーが出てしまうのですが、 package jp.co.se.app.test.a; public class a1{ //メソッド public void go(){ System.out.println("hoge"); } } package jp.co.se.app.test.b; import jp.co.se.app.test.a.a1; public class main{ public static void main(String [] args){ a1 aa = new a1(); aa.go(); } } a1クラスはもちろんコンパイルできますが、 mainクラスでは、シンボルを解釈できません:a1 と出てしまいます。 c:\jp.co.se.app.test.b>javac -classpath c:\jp main.java なにが原因なんでしょうか? どなたか教えてください!

    • ベストアンサー
    • Java
  • パッケージのエラーについて

    パッケージのエラーについてなのですが、コンパイルできずにいます。 C:\java\13\r内に Car.java rensyu1.javaをおいています。 コマンドプロンプトには C:\java\13> と表示させています。classpathの設定はしていません。 システム内の環境設定はしました。 ------------------------Car.java package r; class Car { private int num; private double gas; public Car() { num = 0; gram = 0.0; System.out.println("車を作成しました。"); } public void setCar(int n, double g) { num = n; gram = g; System.out.println("ナンバー:" + number + "ガソリン:" + gas + "です。"); } public void show() { System.out.println("車のナンバーは" + number + "です。"); System.out.println("ガソリン量は" + gram + "です"); } } -------------------------------------rensyu1.java package r; class rensyu1 { public static void main(String args[]) { Car car1 = new Car(); car1.show(); } } やさしいjavaという本を参考にしていまして 教科書どうりですと javac r\rensyu1.java java r.rensyu1でコンパイルできるはずでしたが 「シンボルを見つけられません」というエラーが出ます。 気になるのが、ファイルr内にCar.classがありません。 他にもjavac -classpath . rensyu1.java を入力してみましたが、こちらは 「無効なフラグです」というエラーがでます。 教えていただけると助かります。宜しくお願いします。

    • ベストアンサー
    • Java
  • 超初心者です。教えてください。

    初心者です。javaのマニュアル書に書いてある class Hello{ public static void main (String[] args){ System.out.println("Hi! Hello!!"); } }   はコンパイルすることができたのですが、実行すると Exception in thread "main"java.lang.NoClassDefFoundError: Hello という文書が出てきますどうすればいいのでしょうか。教えてください。

    • ベストアンサー
    • Java
  • javaが実行されない

    雑誌を買ってjavaでプログラミングをしているのですが なぜか実行できません。 ツールはteraPadとJDKを使っています。 public class sample { public static void main(String[] args) { System.out.println("hello!"); } } コンパイルし、classファイルを実行すると Exception in thread "main" java.lang.NoClassDefFoundError: sample/class と出て実行できません。結果はhello!となるはずなのですがどなたかどこがおかしいのか教えてください。

    • ベストアンサー
    • Java
  • 無名パッケージからのインポート

    Javaの初学者です。 無名パッケージ内のクラスを、他のパッケージ中から呼びたいのですが、うまくいきません。 Test/src/Test.java ---- public class Test { public int m1; public Test() { m1 = 1; } } ---- という既存のプロジェクトがあるとします。 このプロジェクト内のTest.javaを利用したいと考えたとき、例えば、 Test2/src/Test2.java ---- import Test; public class Test2 { public static void main(String[] args) { Foo foo = new Foo(); System.out.println(foo.m1); } } ---- はうまくいきます。 ですが、Test2プロジェクトを Test2/src/test2/Test2.java ---- package test2; import Test; public class Test2 { public static void main(String[] args) { Foo foo = new Foo(); System.out.println(foo.m1); } } ---- のようにするとうまくいきません。 package test2の中から、外の無名パッケージのTestクラスを使用するには、どのようにすればよいでしょうか? どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • エラーなのですが…

    Javaコンパイルが成功して、クラスファイルは出来たのですがプロンプト画面上に Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld/java と、表示されます。 原文は public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World!"); } } です。なぜ例外が投げられるのでしょうか?すいませんが回答おねがいいたします。

    • ベストアンサー
    • Java
  • javaプログラミング この文章正確ですか?

    先ほど質問させていただきましたがもう一回質問させていただきます。 class Hello{ public static void main(String[] args) { System.out.println("まいど!”) ; javaの参考書で勉強しています。 これをコンパイルしろということなんですがコマンドプロンプトが読み取ってくれません。間違いがあったら教えてください!

    • ベストアンサー
    • Java
  • classが作られない

    javaをはじめて2日目です。以下がコンパイルしたところ、エラーがでなかったのですが、classが作られていません。何回か試したのですが、参考書には、 >javac Sample2.java とし、もう一度ディレクトリ名が出れば、コンパイル完了とあるのですが、classが作れていないので、実行が出来ません。 すみませんが、教えてください。 //画面に文字を出力するコード class Sample1 { public static void main(String args[]) { System.out.println("ようこそjavaへ!"); System.out.println("javaをはじめましょう!"); } } ちなみに保存名は、Sample2.javaです。

    • ベストアンサー
    • Java
  • javaのpackageのMainとは?

    古い本の初心者プログラムでは、 class Hello{ public static void main(String[] args){ System.out.println("Hello!"); } } だけなんですが、統合環境の Intellij IDEAですと、 package com.company; public class Main { public static void main(String[] args) { // write your code here } } となっていて、mainメソッドを含むクラスのMainを含むpackageが必要になっています。どうしてクラスMainは他のpackageで宣言されてないとならないのですか?

    • ベストアンサー
    • Java

専門家に質問してみよう