量産メモ帳

忘れっぽいのでメモを残しています。浅く適当に書きます。

Java

新着順 人気順

WSLのUbuntu環境にasdfを導入

初めに 複数の言語やツールのバージョンを一元管理できるバージョンマネージャー「asdf」をWSLのUbuntu環境に導入しました。 本記事はWSLのUbuntu環境の構築とHomeBrewのインストールが前提となっています。 rms-099.hatenablog.jp rms-099.hatenablog.jp as…

Javaのclassファイルやjarファイルを逆アセンブルする。

Java の class ファイルを逆アセンブルするコマンドとして javap というものが JDK に用意されています。 https://docs.oracle.com/javase/jp/8/docs/technotes/tools/windows/javap.html class ファイルはバイトコードなのでテキストエディタで開いても分か…

Java アプリケーションの実行(exe)ファイルを作る。

Java アプリケーションを実行する場合、大体、こんなコマンドを打つことになるけど、、、 java -cp foo.jar xxx.yyy.zzz.Bar (引数1) (引数2) ... (引数N) 特にクラスの階層が深いと文字入力するのが面倒になってくるので、やっぱりこのようなイメージで実行…

readResolve メソッドについて。

おまけ。 readResolve メソッドというのは、Serializable インタフェースを実装しているクラスであれば、そのメソッドを定義することによって、もしそのクラスのインスタンスが直列化されている場合、それを復元する直前に呼び出されるメソッドのようだ。 re…

コンボボックスの要素をキー入力で選択する方法。

JComboBox は、キー入力された文字とコンボボックスの要素名の先頭の文字が一致すれば*1、その要素を選択するのがデフォルトの動作のようだ。 その辺の動作は JComboBox のインナークラスである DefaultKeySelectionManager が制御している様子。 で、コンボ…

"Waiting for JSP Index Manager"中にフリーズする。

Eclipse(Indigo) でメソッドの呼び出し元を検索していると、*.java ファイルを一通り検索した後、*.jsp ファイルを検索しに行く訳ですが、 検索中に"Waiting for JSP Index Manager"というメッセージがさり気なく表示されたまま、一向に検索処理が終わらない…

SoapUIはEclipse用プラグインをサポートしなくなった。

数年前に開発したWebアプリケーションをテストするために、試しに SoapUI というツールを Eclipse にプラグインとしてインストールしましたが、殆ど使わないままお蔵入りになっていました。 で、久々に Eclipse をバージョンアップしようと思い、以前の Ecli…

Eclipse が起動中にフリーズする。

最近、Eclipse が起動中にフリーズするようになった。 直接的な原因は、Eclipse が起動した Java プロセスによって確保されたパーマネント領域が不足していたためだった。 けれども、設定ファイル(eclipse.ini)でパーマネント領域を最大で 256MB 確保するよ…

jad.exe を使って複数の class ファイルを一括デコンパイルする。

Eclipse 3.7.1 (Indigo) で jad.exe と JadClipse を使い、class ファイルをデコンパイルしようとしたら、エラーメッセージが表示された。 パッと見、原因が分からず、調査に時間がかかりそうなので、代わりに jad.exe を再帰的に実行することにした。 コマ…

ウィジェットで右クリックした時にメニューを表示させないようにする方法。

Javaの道>掲示板(SWTでマウスクリックを無効化するには) Text text = new Text(自分のShell, SWT.BORDER); text.setMenu(new Menu(自分のShell, SWT.POP_UP)); menu が null だと OS標準の右クリックメニューが表示されるようだ。

Maven Cobertura プラグインの導入にあたって。

以前、Eclipse TPTP を使ってコードカバレッジを調べてみたが、 Eclipse TPTP 4.3 - 量産メモカバレッジ単位がコード行毎ではなくメソッド毎だったので、結局、Maven を使って調べることにした。 Maven 1.x では JCoverage というものがあったが、2.0.x では…

グラフィック・コンテキストについて。

http://www.asahi-net.or.jp/~DP8T-ASM/java/tips/GraphicsContext.html

Java1.6 で配列クラスの名前解決に失敗。

Java1.6 だと"[Ljava.lang.String;"の名前解決ができない話があちこちで見受けられる。 Bug ID: JDK-6434149 (cl) ClassLoader.loadClass() throws java.lang.ClassNotFoundException: [Ljava.lang.String; in JDK 6.0 http://jira.jboss.com/jira/browse/JB…

Java のパフォーマンス チューニングのあれやこれや。

IBM developerWorks 日本語版 : WebSphereべからず集 「RequestDispatcher#forward()の前後でのクライアントへの出力」 「データベース・コネクションの確保、利用、クローズがコード中に分散している」 「Exceptionのコンストラクタに処理を記述する」 「外…

WeakReference と ReferenceQueue

Java Programming Tips:java.lang.ref パッケージの利用方法(SoftReference/WeakReference/PhantomReference) Java弱参照メモ(Hishidama's Java Weak reference Memo) Javaの理論と実践: 弱参照でメモリー・リークを塞ぐ (作成中・・・)

Antでループ処理を行う。

久々に Ant でコードを書いてみたが、途中でループ処理の必要性を感じて、どうやって書くんだろうと少し調べた結果、 どうも標準の Ant はループ処理をサポートしていないことに気づいた。 その代わり、ant-contrib というライブラリを使えばループ処理を書…

WARファイル内にあるクラスを参照するための pom.xml の記述例。

pom.xml の dependency タグを使って、WARファイルにクラスパスを通すのは無理っぽいので、WARファイルをビルドする時、JARファイルもビルドするようにして、それにクラスパスを通すようにした。 まず、参照される側のモジュールは、plugin ノードの attachC…

Javaプロセスのヒープメモリを解析する。

たまに必要になるが、やり方を忘れてしまうのでメモを残しておく。 コマンドプロンプトを開いて、以下の3つのコマンドを実行する。 jps -lm jmap -dump:format=b,file=java.hprof (JavaプロセスのPID) jhat java.hprof jhat の起動に成功すると、コンソール…

Javaアプリの接続タイムアウトと読み取りタイムアウトについて。

Java の技術文書を読むと、Java アプリケーションがネットワークに接続する時やファイルを読み込む時のタイムアウトは、デフォルトで"-1"(無制限?)になっているようです。 ネットワークのプロパティ

プログラミング言語ランキング(2019年1月)

仕事の都合でPythonを勉強する必要に迫られて、そういや今どれぐらい人気があるんだろう?と思い、プログラミング言語のランキングを紹介しているサイトを幾つか調べて、軽くまとめてみました。

Linux上で動作するJavaプロセスがDBに接続する時に発生する処理遅延問題を解決する。

Linux 上で動作している Java プロセスが DB にアクセスする時に処理遅延が起きた場合、この引数を指定すると問題が解決することがあります。

HttpClient#execute メソッドを呼び出したら"302 Moved Temporarily"が返ってきた時の対処方法。

Stack Overflow に解答が載っていました。 java - Httpclient 4, error 302. How to redirect? - Stack Overflow DefaultHttpClient httpclient = new DefaultHttpClient(); httpclient.setRedirectStrategy(new DefaultRedirectStrategy() { public boolean…

java.sql.DatabaseMetaData#getTables メソッドの戻り値が null になる問題を解決する。

これ、自分もハマったことがある。 Oracle 10g standardへのJDBC接続にてDatabaseMetaData.getTablesメソッドが上手く機能しません。 | JavaのQ&A【OKWave】 確かに第二引数(スキーマ名)に null を指定すればテーブル名を取得できる。 しかし、Oracle の場合…

Java と C# の用語を比較する。

7年前に C# を勉強した時のメモを今更だけどアップロードしておく。 JavaC# JVM (Java Virtual Machine)CLR (Common Language Runtime) バイトコードMSIL (Microsoft Immediate Language) キーワードディレクティブ パッケージ名前空間 (namespace) クラスフ…

eclipse.ini の JVM パラメータを最適化してみた。

PC のメモリの空き容量が不足気味なので、一番メモリを喰っている Eclipse のヒープメモリを調整してみた。 最適化前のパラメータとヒープメモリの推移: -Xms40m -Xmx1024m -XX:MaxPermSize=256m

Java におけるリソースの読み込み方法。

既出の記事があるけど、これはいつも忘れてしまうので、メモさせていただく。 http://d.hatena.ne.jp/waman/20080504/1209861294 Java アプリケーションを実行しているディレクトリ上のリソースを読み込む場合 (引数は相対パス形式) FileInputStream(java.la…

XMLファイルの中身をPOJOのリストに変換する。

XMLファイル名が"pojos.xml"、ルート要素が"PojoRoot"という前提で、以下の様な感じで行ける。 List loadFromXml() throws Exception { Unmarshaller unmarshaller = JAXBContext.newInstance(AnyNameWillDo.class).createUnmarshaller(); JAXBElement eleme…

POJOのリストをXMLファイルに保存する。

こんな感じで行けた。 void saveToXml(List pojoList) throws Exception { Pojo[] pojos = pojoList.toArray(new Pojo[0]); Marshaller marshaller = JAXBContext.newInstance(pojos.getClass()).createMarshaller(); marshaller.marshal(new JAXBElement(ne…

クラスの拡張方法の違い。

Java だと、これで問題なく拡張できる。 public class Base { } public class Sub extends Base { } C++ の場合、以下のように書いても拡張できるようだが、親クラスと子クラスの変数に対する参照が入れ替わったりして、おかしな事になったりする。 class Ba…

ローカル変数の戻り値に対する参照の違い。

Java の場合、あるメソッド内部のローカル変数が、そのメソッドの戻り値として返されても、メソッドを呼び出した側は、受け取った変数を参照することができる。 public static String getString() { String str = "Value of local variable"; return str; } …