- ベストアンサー
Package内のクラスを利用する
最近、javaのプログラムを学びはじめたものです。 自分で作成したクラスをpackageにまとめてそれを 他のプログラムで呼び出すにはどうすればよいか分からず importやクラスパスを使ってみたのですがエラーが出てしまいます。 このやり方についての参考になるサイトや方法などお知りでしたら 教えてください。よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
関連するQ&A
- importでクラスを呼び込みたい
今、javaプログラムでjarファイルの中のクラスを呼び込む というものを作成しています。 プログラムでjarファイル内のクラスを呼び込むためにimportを 使ってクラスを使いますということを宣言しなくてはいけないのですが、importが上手くいかずエラーが出てしまい、プログラムがコンパイルできません。 クラスを含んだjarファイルの場所は /home/kimura/javahello/JarTest.jar です。その中にHello.classというクラスメソッドが入っておりそれを 別の場所で作成しているプログラムで呼び出し使いたいと思っています。 importの記述方法が分からず困っています。 この記述方法分かるという方がいらっしゃったら教えてください。 参考サイトなどもお知りでしたらよろしくお願いします。
- ベストアンサー
- Java
- 同一パッケージにあるクラスが見つからないエラー
Tomcatとeclipseを用いてjspによるウェブアプリ開発の勉強をしているものです。 tagsrch.java内のメソッドに、同一パッケージ(フォルダ名:mangasearch)内のmangalist.javaで定義したmangaクラスというクラスを使いたいのですが、以下のように、シンボルが見つけられないというエラーが出てしまいます。 C:\(中略)\mangasearch>javac tagsrch.java tagsrch.java:11: エラー: シンボルを見つけられません public static List<manga> searchByKey(String k[]) throws IOException{ ^ シンボル: クラス manga 場所: クラス tagsrch tagsrch.java:14: エラー: シンボルを見つけられません manga[] list = new manga[cnum]; 同一パッケージ内に置かれている以上、tagsrch.javaにおいてmangaクラスが使えるはずだと思います。 ですが、いろいろなサイトを参考にして試してもmangaクラスが見つからないまま、tagsrch.javaがコンパイルできません。 初歩的質問で申し訳ありませんが、よろしくお願いいたします。 -参考- 1.いろいろ試したこと 1-1.カレントディレクトリを保存している場所より1つ上の場所でコンパイルする。 eclipseでtomcatプロジェクトを作成したため、どのクラスファイルにもpackage mangasearch;が含まれていました。なので1-1.を行い「javac パッケージ名/ファイル名」でコンパイルしてみました。 1-2.クラスパスを入れてコンパイルしてみる。 同一パッケージ内なので、この必要はないはずですが、 C:\(中略)\mangasearch>javac -classpath C:\(中略)\mangasearchでコンパイルしてみました。 下記のURLを参考にこの対策を講じましたが、エラーは変わりませんでした。 1-1.1-2.の参考URL:http://okwave.jp/qa/q2520327.html 1-3.メソッドをmangalist.java(mangaクラス)上で定義してしまう。 分割をあきらめ、tagsrch.java上のメソッドをmangalist.javaのmangaクラス上に定義してみました。 publicつけたままだと、 C:\(中略)\mangasearch>javac mangalist.java mangalist.java:76: エラー: クラスtagsrchはpublicであり、ファイルtagsrch.javaで宣 言する必要があります となったため、publicをとりました。するとコンパイルは出来ましたが、おそらく異なるパッケージからは使えないクラスとなったため、jsp上でアクセスできないというエラーが発生しました。 org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.IllegalAccessError: mangasearch/tagsrch このため、分割してtagsrch.javaを宣言する必要があり、1-3.の対策では最初にあげたmangaクラスを認識する問題に帰着すると思われます。 2.mangalist.java/tagsrch.javaについて mangalist.javaのコンパイルはできています。 mangalist.javaは、ただ単にmangaクラスとそれに付随するフィールド、コンストラクタを記述しただけのファイルです。 ■mangalist.java package mangasearch; class manga{ フィールド名 ・・・ manga(){ //コンストラクタ } } ■tagsrch.java public class tagsrch extends manga{ メソッド{ } }
- ベストアンサー
- Java
- ファイルからの入力 Scannerクラス
ファイルの内容を読み込むプログラムをJavaで作成しています。 Scannerクラスを利用するため、以下のようにimport宣言しました。 package bc; import java.util.Scanner; class FileScanner { コンストラクタ{ } メソッド{ } : : mainメソッド{ } } という感じで書いているのですが、この場合のメソッド名は、 Scannerクラスで定義されている名前でないとダメなのでしょうか? 自分で作った名前でメソッドを定義したのですが、 Scannerクラスで定義されていません。 というようなエラーが返ってきてうまくいきません。 どなたか、ご教授くださいm(_ _)m
- ベストアンサー
- Java
- java パッケージについて
[test](ルート) | ーーーーーーーーーーーーーーーーーーー | | | Test.java DirTestA.java [testt] | [testtt] | DirTestB.java パッケージについてわからないので質問します。 上の図のようにファイルを格納しています。 DirTestA.javaでDirTestB.javaのオブジェクトを作成するのは DirTestB.javaをimportすれば可能ですが 逆にDirTestB.javaでDirTestA.javaのオブジェクトを作成ができません。DirTestA.javaでpackage Test;と定義して DirTestB.javaでimport Test.DirTestA;とインポートしても ./TestT/TestTT/DirTestB.java:2: パッケージ Test は存在しません。 とエラーが出ます。 どうすればオブジェクトを作成できますか?
- 締切済み
- Java
- はじめてのパッケージの使い方
JAVAでのパッケージの使い方について 教えて下さい。 下記を参考にしました。 Javaの道 > Java基本 > パッケージ -2.パッケージの作成 http://www.javaroad.jp/java_package2.htm サンプルにある通りコンパイルをすると うまく行くのですが カレントのディレクトリを変更すると どうすればいいのかわかりません。 知りたいことは カレントディレクトリPackageBから 別ディレクトリのPackageAをインポートすることは可能でしょうか? やってみた結果は以下となります。 PackageB>javac ExPackage2B.java ExPackage2B.java:3: パッケージ PackageA は存在しません。 import PackageA.ExPackage2A; //(4) ^ ExPackage2B.java:7: シンボルを見つけられません。 シンボル: クラス ExPackage2A 場所 : PackageB.ExPackage2B の クラス ExPackage2A ex = new ExPackage2A(); //(6) ^ ExPackage2B.java:7: シンボルを見つけられません。 シンボル: クラス ExPackage2A 場所 : PackageB.ExPackage2B の クラス ExPackage2A ex = new ExPackage2A(); //(6) ^ エラー 3 個 PackageA/ExPackage2A.javaファイル package PackageA; //(1)パッケージPackageAの定義 public class ExPackage2A { //(2)publicなクラスExPackage2Aの定義 public void showClass() { System.out.println("クラスExPackage2Aです。"); } } PackageB/ExPackage2B.javaファイル package PackageB; //(3)パッケージPackageBの定義 import PackageA.ExPackage2A; //(4) public class ExPackage2B { //(5) public static void main(String[] args) { ExPackage2A ex = new ExPackage2A(); //(6) ex.showClass(); //(7) } }
- ベストアンサー
- Java
- 無名パッケージのクラス
パッケージ化されたクラス(pacA.ClassA)から、無名パッケージ(ClassB)のクラスを参照できるのでしょうか。 状況を詳しく書きますと、 ClassB はコンパイル済みで、pacA.ClassA の中で ClassB を new しています。 pacA.ClassA をコンパイルしたいのですが、ClassB を import できません(コンパイルエラー)。 それとも、ClassB は import する必要がなく、単に私のコンパイルの仕方(classpathの通し方等)が悪かったのでしょうか。 どなたか教えて頂けませんか。
- ベストアンサー
- Java
- Javaのパッケージについて初歩的な質問です
Javaのパッケージについて質問です このコードの1番最後のZenhanクラスのdoTogameメソッドを呼び出しているところで, パッケージ化していてimportされていないのに クラス名.メソッド名でエラーなしで処理できるのはなぜですか? 同じパッケージ名だからだですか? mainメソッドでimportしてるからですか?教えてください
- 締切済み
- Java
- java import文のエラー
javaのソースで、パッケージをimportして使用するための簡単なサンプルを作成しました。 import文でクラス名まで指定すれば問題ないのですが、*を利用するとコンパイルエラーとなってしまいます。 コンパイル時にクラスパスを指定するのかと思って試してみましたが、やはりエラーでした。 回避方法をご存知の方いらっしゃいましたら、教えていただけますでしょうか。 なお、java/javacは、1.5.0_14を使用しています。 ■ソースコード(1) <C:\Work\Test\PackTest.java> package Test; public class PackTest{ public static void methodA(){ System.out.println("パッケージ成功"); } } ■ソースコード(2) <C:\Work\UsePack.java> import Test.*; //import Test.PackTest; なら成功 class UsePack{ public static void main(String args[]){ PackTest.methodA(); } } ■エラー例(1) >javac -d . PackTest.java (これは成功) >javac UsePack.java UsePack.java:5: PackTest にアクセスできません。 クラスファイル .\PackTest.java は不正です。 ファイルにクラス PackTest が含まれていません。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 PackTest.methodA(); ■エラー例(2) >javac -d . PackTest.java (これは成功) >javac -classpath C:\Work\Test UsePack.java UsePack.java:1: パッケージ Test は存在しません。 import Test.*; ^ UsePack.java:5: PackTest にアクセスできません。 クラスファイル C:\Work\Test\PackTest.class は不正です。 クラスファイル Test.PackTest に不正なクラスがあります。 削除するか、クラスパスの正しいサブディレクトリにあるかを確認してください。 PackTest.methodA(); ^
- 締切済み
- Java
- Beanクラスのimportについて
Beanクラスを作成し、そのBeanクラスをServletでimportしたいのですがコンパイルするとエラーになってしまいます。 Bean(TestBean.java)をsampleパッケージに保存してコンパイルした後に Servlet(Test.java)を ----------------------------------------------- import sample.TestBean; import javax.servlet.*; ・・・・・・・ ・・・・・・・ ------------------------------------------------ として、sampleファイルのひとつ上のディレクトリーに保存してコンパイルすると Test.java:1: シンボルを解釈処理できません。 とエラーになってしまいます。 原因がお分かりになるかた、ご教授をお願いできないでしょうか。よろしくお願いいたします。
- ベストアンサー
- Java
- NetBeansでのJavaプログラミングについて
今NetBeansで本を見ながらJavaプログラミングの勉強をしているのですが、本のパッケージとクラスパスの章をやっているのですが自作のパッケージをインポートするときいちいちクラスファイルを持ってきてコンパイルしているのでものすごく不便です。本にはドットを使ってクラスパスに指定されたディレクトリの中のフォルダに入っているクラスファイルにアクセスできるとあったのですがNetBeansのクラスパスの設定の仕方もわからずかなり困っています。NetBeansの使い方を調べたりもするのですがどのサイトもいまいちわかりずらいのでどなたかご教授お願いします。
- 締切済み
- Java
お礼
お返事ありがとうございました。 教えていただいた「2.環境変数「CLASSPATH」に使用するクラス(ライブラリ)のパスを指定する。」で指定してやったところ無事にコンパイルと実行ができました。