情報科学屋さんを目指す人のメモ(FC2ブログ版)

何かのやり方や、問題の解決方法をどんどんメモするブログ。そんな大学院生の活動「キャッシュ」に誰かがヒットしてくれることを祈って。

ブログ内検索

スポンサーサイト このエントリーを含むはてなブックマーク

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告 | 編集

Javaのraw type警告を消す方法メモ このエントリーを含むはてなブックマーク

raw type 警告

raw typeというのは、ジェネリクス型(型変数を持つ型)の<T>のような型変数部分を取り除いた型のことを言います。たとえば、「Set」は「Set<V>」のraw typeです。

そして、基本的にraw typeは、Java 5より前のバージョンとの互換性のために存在しているイメージで、利用しないことが推奨されます。なので、うかつにraw型を利用すると、次のような警告が出ますここでは、Classクラスを用いた場合です

Class is a raw type. References to generic type Class should be parametarized

日本語だと

Classはraw型です。総称型Class<T>への参照は、パラメーター化する必要があります

ここでは、Eclipseを利用していて、利用しているフレームワークなど、自分が書いたコード以外の部分に警告が表示されている状況を想定します。

Eclipseの言うとおり、アノテーションを付ける

Eclipseを使っていると、修正候補として

Add @SuppressWarnings 'rawtypes' to 'clazz'

のように表示されます。これの通りに修正すれば

Class clazz = ...

が、次のようになります。

@SuppressWarnings("rawtypes") Class clazz = ...

もしフレームワーク内にこのような修正箇所が大量にある場合、何かやる気が起こりませんし、追加する量が多いのに加えて、読むときに邪魔です。そもそもフレームワークに追記すること自体やりたくないです。

総称型にする

総称型を使わないからエラーが出るので、総称型を使えばいいわけです。ということで、シンプルには

Class

と書いてある部分を徹底的に

Class<適切な型名>

にすればいいわけです。そして、徹底的にそれをやるとどうなるかというと、

Cannot create a generic array of Class<型名>

配列でraw typeが使われていると、この方法ではまた別のエラー、そしてこちらはコンパイルできないエラーになってしまいます。

<?>で総称型にする

もっとシンプルに、<?>を問題のraw typeの後ろに付けて総称型にしてしまう手もあります。これを使うとGeneric Type配列が作成できないことを回避できるわけです。なので、配列のところだけ<?>と書いておけばいいことになります。

しかし、それでもやはりソースコードを書き換えたくない。というか、とにかく警告が邪魔なわけです。

Eclipseの警告を表示する機能を止める

警告表示自体をEclipseの設定によって抑制すればソースコードを書き換えることなく、大量の警告を止めることが出来ます。

Window>Preferences>Java>Compiler>Errors/Warnings>Generic types>Usage of a raw type」でWarningをIgnoreにすればOK。

また、設定画面の「Configure Project Specific Settings」を利用すれば、特定のProjectに対してのみこの設定を適用することも出来ます。

まとめ

Eclipseの警告を抑制する方法をメモしたかっただけです

スポンサーサイト
Eclipse | コメント:0 | トラックバック:0 | 編集

Eclipseがやっぱり不安定なのでJDK 6u20に戻した このエントリーを含むはてなブックマーク

Eclipseが不安定になったり起動できなくなる問題について」の対策によって、応答無しになる頻度が大きく減少したのですが、それと関連するのかどうなのか、負荷が大きめの操作(呼び出しもとを検索など)を行ったとき、たまにやはり応答無しになってしまいました。そこで、結局JVMを古い物に戻すことにしました。

JDK 6u21のアンインストール

アンインストールは、コントロールパネルの「プログラムと機能」から行うことが出来ます。JREとJDKが別々なので、両方アンインストールしてしまってくださいちなみに、新しいバージョンがインストールされている状態では古いバージョンのJDKをインストールしようとしてもうまくいきません。もしアンインストール前に古いバージョンをインストールしようとしてしまった場合は、なぜかプログラムと機能には登録されてしまうので、それも含めてアンインストールしてください

JDK 6u20のダウンロード

Java関連のソフトウェアの古いバージョンはArchiveページから入手可能で、特にJDK/JRE 6u20は「Archive: Download Java Platform Standard Edition (Java SE) 6 Update 20」からダウンロードできます。

JDK 6u20のインストール

インストールはバージョンが古いからといって、特に注意することなく実行できます。

Eclipseがクラッシュしなくなった

JDKのバージョンを元に戻したことで、応答無しになることが(今のところ)全くなくなりました。eclipseを安定させたい場合には有効な手段だと思います。

Eclipseで学ぶはじめてのJava
Eclipse PDTではじめるPHPプログラミング入門
Eclipse 3.4 プラグイン開発 徹底攻略

Eclipse | コメント:0 | トラックバック:0 | 編集

Eclipseが不安定になったり起動できなくなる問題について このエントリーを含むはてなブックマーク

eclipseが不安定の原因

今回、Eclipseが非常に不安定になり、起動してすぐ応答無しになってしまうこともあり、使い物にならなくなってしまいました。今では解決しましたが、そのときの解決方法と、「現時点で解決されたのかどうか、はたまた未解決なのか」をメモしておきます。

問題

問題が発生した環境は、Windows 7 64bit、Java SE Runtime Environment build 1.6.0_21-b06 64bit(JRE 6u21)、Eclipse 3.6 Helios(64bit)です。

対策

対策は、「Windows 7 x64 への Eclipse Helios のインストール」を参考に、eclipse.iniファイルに

--launcher.XXMaxPermSize
256M

を加えただけです。変更後のeclipse.iniはこんな感じ。

-startup
plugins/org.eclipse.equinox.launcher_1.1.0.v20100507.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.0.v20100503
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-XX:MaxPermSize=256m
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx384m

これだけで、無事解決できました。

現在は?

ここまでは、作業履歴のようなもので、これからJREとEclipseをインストールする人がどうするべきかのほうが大事です。そして、Eclipseのサイトに、次のような記述がありました。

UPDATE: The latest JDK/JRE downloads have fixed this problem, so the reecommended way to resolve the problem is to download and re-install from http://www.java.com (alternative link is http://java.sun.com/javase/downloads/index.jsp). Make sure you have b07 or higher by running java -version
(FAQ How do I run Eclipse? Oracle/Sun VM 1.6.0_21 on Windows より)

つまり、現在新しくJRE(JDK)をダウンロードしてインストールする分にはこの問題は発生しないようです。そのため、少なくともこの問題を回避するためにJRE 6u20をインストーする必要はもうなさそうです。以上、メモ終わり。

Eclipseで学ぶはじめてのJava
Eclipse PDTではじめるPHPプログラミング入門
Eclipse 3.4 プラグイン開発 徹底攻略

Eclipse | コメント:0 | トラックバック:0 | 編集

Eclipse 32bit は、JDK(JRE) 64bit では動作しない? このエントリーを含むはてなブックマーク

Eclipse 64bit?

EclipseはJVM上で動作するJavaで記述されたプログラムなので、そもそもどうして32bit用と64bit用があるのか疑問に思っていました。

調べてみると、その理由はEclipseがネイティブDLLを利用して動作していることにあるそうです。つまり、JRE 64bitをインストールしたWindows 7 64bitには、Eclipse 32bitが必要とする32bit用DLLが含まれず、Eclipse 32bitを起動することが出来ないようなのです。

ためしにやってみると、次のようなエラーメッセージが。eclipseの起動オプション(-vm)で直接指定してもダメでした。

A Java Runtime Environment (JRE) or Java Development Kit (JDK)
must be available in order to run Eclipse. No Java virtual machine
was found after searching the following locations:
...
javaw.exe in your current PATH

64bit OS で 32bit Eclipse を起動する

JDK(JRE) 32bit版をdownloadしてきて、64bit OS(Windows 7 64bit)にインストールすれば十分でした。問題なくインストールできました。

Eclipse | コメント:0 | トラックバック:1 | 編集

Subversionのpre-revprop-changeフックに関するエラー このエントリーを含むはてなブックマーク

エラー

エラーの内容は、こちら。

SVN: 'Set revision author' operation finished with error: svn: リポジトリが、リビジョン属性を変更できるようにはなっていません。
管理者に pre-revprop-change フックを作成するよう頼んでください
svn: リポジトリが、リビジョン属性を変更できるようにはなっていません。
管理者に pre-revprop-change フックを作成するよう頼んでください

このエラーは、Eclipse用プラグインSubversiveを利用してレポジトリへのコミットを行ったときに発生したものです。とりあえず、「pre-revprop-change」ファイルが無いことが問題なので、次のようにして作成しました。

pre-revprop-changeファイルを作成する

作成と言っても、デフォルトファイルpre-revprop-change.tmplhooksディレクトリにあるので、レポジトリのディレクトリに移動して、

cp hooks/pre-revprop-change.tmpl hooks/pre-revprop-change

のようにコピーするだけです。簡単ですね。

エラー再び

とりあえず、pre-revprop-changeファイルを作成することには成功しましたが、コミット時にまたもやエラーが。

SVN: 'Set revision author' operation finished with error: svn: 'pre-revprop-change' フックが次のようなエラーを出力して失敗しました:
Changing revision properties other than svn:log is prohibited

svn: 'pre-revprop-change' フックが次のようなエラーを出力して失敗しました:
Changing revision properties other than svn:log is prohibited

今度は、少しエラーの内容が異なります。ここで気がついたのですが、実はコミット時に、Subversionで簡単に使えるとある機能を使っていました。それが原因でした

その機能とは、コミットするユーザ名(Author)を変更(設定)する機能ですこれは、Subclipseでは(おそらく)できない機能ですやりかたは簡単で、レポジトリの設定(レポジトリプロパティ)の「Advanced>Override author name with represented below:」に、Authorとして登録したい名前を入力するだけです。たとえば、SVN+SSHを利用しているときは、SSHのログインユーザ名でコミットしてしまいますが、この設定を利用することで好きな名前に変更できます。

さて、これがどうエラーと関係しているかというと、エラー冒頭の「Set revision author」と関係しています。つまり、authorを変更(設定)するときにエラーが発生しているのです。もう少し細かく言うと、実は、pre-revprop-changeファイル内の設定で、authorの書き換えを禁止しているのが問題なのです。そこで、先ほど作成したデフォルトのpre-revprop-changeファイルの

if [ "$ACTION" = "M" -a "$PROPNAME" = "svn:log" ]; then exit 0; fi

の次の行に

if [ "$PROPNAME" = "svn:author" ]; then exit 0; fi

を追加してauthorの書き換えを許可してあげます。これで、Authorを変更(= svn:authorを変更)出来るようになりました。

成果

もう一度コミットしてみると、正しく終了します。そして、Historyでコミットしたファイルを見てみると、たしかにAuthorの欄が設定した名前になっています。めでたしめでたし。

Subversive便利

Authorを手軽に設定できることも便利ですが、そのほかにもSubclipseより便利なところがたくさんありました。細かいところですが、たとえばプロキシサーバを簡単にレポジトリごとに設定できるところや、SVNやSSHの接続ポートを簡単に設定できるところです。Subclipseユーザの型は、是非一度Subversiveを使ってみてくださいただ、SubclipseとSubversiveを一つのeclipseに同時にインストールするのはやめた方がいいです

Subversion実践入門:達人プログラマに学ぶバージョン管理(第2版)
実用 Subversion 第2版
入門Subversion―Windows/Linux対応

Subversion | コメント:0 | トラックバック:0 | 編集
 | HOME |  OLD >>
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。