- ベストアンサー
他者のソースの利用(ソーティングの方法)
昨日質問させていただいた者です。tom11さんに教えて頂き、ソーティングの勉強をしていました。ただ、「強いて変えるとすればimport文」の変更が自分ではできませんでした。 「import java.awt.*;」を加えただけでimportを消してください的なエラーが出ます。awtなら入っているはずなのですが。。。\(-"-)/ どうしたらいいでしょうか??
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは、 >「public 型 TableSorter はそれ独自のファイル内に定義されなければなりません。行 19」 >「シリアライズ可能クラス TableSorter は long 型の static final serialVersionUID フィールドを宣言していません。行 33」 >「宣言されたパッケージは、予期されるパッケージ sort に一致しません。行 1」 とでます。特に3つ目のパッケージがsortに一致しないというのはどうすればいいのでしょうか? ソースファイルを見てないので、 推測でしか判断できません。 いろいろ、やって、パニックになっていませんか? うまく行かない時は、冷静になるのが 一番の様な気がします。 失礼なのですが、回答No4は、実行してみました。?? No4は、javaのソースコードは、 一切、触っていません。 単に、javaのソースコードをダウンロードして、 eclipseに取り込んで、実行しているだけです。 特に、私も、やってみましたが、 うまく、実行できているのです。 javaの問題と言うより、 eclipseの操作の問題かもしれませんね。 エラーの行のソースコードを 1行と、19行と、33行をコピーペーストで 公開してくれませんか。??? ちなみに、TableSorter.javaの 19行目は、コメント文になっているのですが、 なぜ、エラーになるか、解りません。 33行目も、コメント文なのですよね。 1行目は、 import java.awt.*; になっています。 エラーになる理由解らないのです。 後は、では明日。
その他の回答 (6)
- freedom560
- ベストアンサー率46% (80/173)
>「public 型 TableSorter はそれ独自のファイル内に定義されなければなりません。行 19」 No.2でかかれてありますが、行19が「public class TableSorter」と書かれてあり、かつこのファイルがTableSorter.java以外のファイル名ではないですか? Javaではpublic classを宣言するソースファイル名はクラス名と一致させなければなりません。 http://www.javaroad.jp/java_basic1.htm >「シリアライズ可能クラス TableSorter は long 型の static final serialVersionUID フィールドを宣言していません。行 33」 どうやら、Eclipse3.1以降でのデフォルト機能みたいですね。これはエラーではなく警告ではないですか? http://d.hatena.ne.jp/beyondseeker/20060104 >「宣言されたパッケージは、予期されるパッケージ sort に一致しません。行 1」 行1に「package sort」以外のパッケージ名を宣言しているまたはパッケージ名を宣言していない(デフォルトパッケージを利用している)かつ、このjavaファイルが「sort」というパッケージ下にありませんか? Javaでは宣言したパッケージ名とディレクトリ構造を合わせる必要があります。Eclipseを使っているのならば左の方にあるプロジェクト名の中に(デフォルトパッケージ)と書かれたものがあり、その下にsortというパッケージがあるはずなので、適切なパッケージに移してください。 Eclipseを使っているのならソースコード中に黄色い警告や赤いエラーの表示があってこれをダブルクリックすると結構適切に直してくれたりするんですけどね・・ まぁ、急ぎでないならよいですが、急ぎならgoogleでエラーメッセージの一部(クラス名やパッケージを除いた日本語の部分)を検索したら同じものが見つかったりしますよ・・
補足
ありがとうございます。 エラーは一部解決できました。 URLの方、大切に使わせて頂きます。 あと、Eclipseの使い方勉強します。
- tom11
- ベストアンサー率53% (134/251)
追伸 ワンポイント eclipseでは、import文は、自動で、 設定できるみたいですよ。 私の英語版なので、表記が違いますが、 メニューのsource の、 Orgnaize improtを実行すると、 import文は、自動で、再構築してくれるみたいです。 ショートカットだと ctrl + shift + O の様です。 これを、実行すると、 import文は、eclipseが、自動で修正してくれる 見たいです。
補足
ctrl+shift+Oを押すとimport文が4つくらい追加されました。こんないい機能があったんですね!! ありがとうございますm(__)m ただ、やはり同じようなエラーが出まして、 「public 型 TableSorter はそれ独自のファイル内に定義されなければなりません。行 19」 「シリアライズ可能クラス TableSorter は long 型の static final serialVersionUID フィールドを宣言していません。行 33」 「宣言されたパッケージは、予期されるパッケージ sort に一致しません。行 1」 とでます。特に3つ目のパッケージがsortに一致しないというのはどうすればいいのでしょうか? よろしくお願いします。
- tom11
- ベストアンサー率53% (134/251)
こんにちは、 まず、サンプルを、実行することから 初めては、いかがでしょうか。 前書いた。サンマイクロのTableSorterが、あるところから、 http://java.sun.com/docs/books/tutorial/uiswing/components/table.html にあります。 ここの、 Sorting and Otherwise Manipulating Data ここをクリックすると、TableSorterのところに、ジャンプします。 ここにある。 TableSorterDemo.java と TableSorter.javaの二つのファイルを、 eclipseで、新規プロジェクトを作り、そこのソースファイルを入れるフォルダーに ダウンロードします。 あと、eclipseで、TableSorterDemo.javaをデバッグ実行すれば、 サンプルが実行できます。 後は、改良していけばいいと思います。
- tom11
- ベストアンサー率53% (134/251)
こんにちは、追伸、 私は、javaのプログラムを書く時、 よく、packageを、使うので、 packageの事を書きましたが、 もし、使わずにプログラムを書く方なら、 packageのことは、忘れてください。
補足
関わってきそうなpublicを全て消去してみました。 すると次のようなエラーメッセージが出ました。 Syntax error on token "import", delete this token やはりimportの問題があるようです。 import java.awt.*; import java.awt.event.*; import java.util.*; import java.util.List; import javax.swing.*; import javax.swing.event.TableModelEvent; import javax.swing.event.TableModelListener; import javax.swing.table.*; このどこかに問題があるのでしょうか・・?
- tom11
- ベストアンサー率53% (134/251)
こんにちは、 推測で、申し訳ありませんが、 もしかして、TableSorter クラスが、Publicになっているからだと思います。 >「public 型 TableSorter はそれ独自のファイル内に定義されなければなりません。 sort.java Sample/sort 行 19」 >というエラーが出ました sort.javaにTableSorterクラスを、そのままコピーペーストしたのですね。 >public class TableSorter extends AbstractTableModel { > protected TableModel tableModel; このpublicが、必要ないです。 publicのままだと、プロジェクトに、sort.javaと、TableSorter.java二のファイルを 作り、エラーの書いているとおりに、publicである、TableSorterクラスは、 TableSorter.java に、独自ファイルとして、定義しないといけなくなります。
- tom11
- ベストアンサー率53% (134/251)
こんにちは、 >強いて変えるとすればimport文」 improt文ではなく、package文です。 TableSorter.javaを、内部クラスなどや、 同じ、javaファイルに挿入して、解決していれば、 package文の変更も、なくなります。
補足
すいません、tablesort.javaをEclipse3.1環境下にコピペしたのですが、 「public 型 TableSorter はそれ独自のファイル内に定義されなければなりません。 sort.java Sample/sort 行 19」 というエラーが出ました。 独自のファイル内に定義するとはどういう意味なのでしょうか?? よろしくお願いします。
補足
申し訳ありません、上記のエラーは解決できました。 Eclipseのフィルタ機能を使い、選択したりソースのエラーのみを表示させると消えました。 ご指摘の通り、Eclipseの使い方を良く分かっていないです。 すいません、貴重な時間を無駄にさせてしまいまして。 ただ、上記のEclipse上のエラーを解決すると今度はサイト上で 「Syntax error on token "import", delete this token」 というのが出てしまいます。 次の質問でソースを貼りたいと思います。 よろしくお願いします。