Tips のバックアップ(No.32)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Tips へ行く。
- 1 (2012-03-13 (火) 15:15:49)
- 2 (2012-04-30 (月) 06:14:03)
- 3 (2012-05-16 (水) 14:04:04)
- 4 (2012-07-04 (水) 13:11:51)
- 5 (2012-07-04 (水) 16:34:18)
- 6 (2012-07-04 (水) 21:41:12)
- 7 (2012-07-16 (月) 23:41:18)
- 8 (2012-07-17 (火) 11:38:19)
- 9 (2012-07-17 (火) 15:29:42)
- 10 (2012-07-19 (木) 12:20:21)
- 11 (2012-07-24 (火) 18:01:09)
- 12 (2012-09-20 (木) 14:33:13)
- 13 (2012-10-04 (木) 21:48:17)
- 14 (2013-01-25 (金) 14:34:38)
- 15 (2013-03-07 (木) 16:47:45)
- 16 (2013-10-31 (木) 18:46:47)
- 17 (2014-03-05 (水) 17:58:40)
- 18 (2014-03-11 (火) 15:12:01)
- 19 (2014-09-02 (火) 15:52:58)
- 20 (2014-09-03 (水) 18:22:36)
- 21 (2014-09-26 (金) 19:00:17)
- 22 (2014-09-29 (月) 14:41:17)
- 23 (2014-10-02 (木) 15:08:03)
- 24 (2014-11-19 (水) 19:36:39)
- 25 (2015-10-23 (金) 18:16:10)
- 26 (2015-10-23 (金) 21:27:26)
- 27 (2015-10-30 (金) 16:39:51)
- 28 (2015-11-30 (月) 17:16:26)
- 29 (2016-03-03 (木) 18:49:56)
- 30 (2016-03-31 (木) 15:43:43)
- 31 (2016-04-20 (水) 20:29:56)
- 32 (2016-04-26 (火) 15:07:10)
- 33 (2016-04-26 (火) 17:01:53)
- 34 (2016-05-02 (月) 20:10:26)
- 35 (2016-09-26 (月) 19:25:52)
- 36 (2017-03-30 (木) 14:23:02)
- 37 (2017-04-04 (火) 14:13:45)
- 38 (2017-04-04 (火) 14:17:08)
- 39 (2017-04-07 (金) 13:51:51)
- 40 (2017-07-12 (水) 19:30:26)
- 41 (2017-07-13 (木) 14:07:55)
- 42 (2017-07-14 (金) 13:49:09)
- 43 (2017-07-14 (金) 18:18:18)
- 44 (2018-02-27 (火) 14:30:05)
- 45 (2019-02-07 (木) 16:28:55)
- 46 (2019-04-19 (金) 13:43:27)
- 47 (2019-04-25 (木) 17:11:27)
- 48 (2022-08-20 (土) 22:15:25)
- 49 (2024-02-21 (水) 02:06:55)
- title: Java Tips author: aterai keywords: [Java, install, JAVA_HOME] description: JDKのインストール、Java Swingのデバッグ方法、環境変数で実行するjava.exeを切り替えるバッチファイルなどのメモ pubdate: 2011-01-25
概要
JDK
のインストール、Java Swing
のデバッグ方法、環境変数で実行するjava.exe
を切り替えるバッチファイルなどのメモの一覧です。
Ubuntu に、oracle-java8 をインストール
apt-get install
でインストール
sudo add-apt-repository ppa:webupd8team/java sudo apt-get update sudo apt-get install oracle-java8-installer sudo update-alternatives --config javac
tar.gz
をダウンロードしてインストール- Java SE Downloadsから、
jdk-8uxx-linux-xxxx.tar.gz
をダウンロード
- Java SE Downloadsから、
sudo tar zxvf jdk-8u66-linux-i586.tar.gz -C /usr/lib/jvm
export JAVA_HOME=/usr/lib/jvm/jdk1.8.0_66 export PATH=$PATH:$JAVA_HOME/bin
Swing debug agent
- Swingコンポーネントの再描画をJXLayerのDebugPainterを使ってデバッグ
JXLayer
のDebugPainter
を使ってコンポーネントの再描画を可視化するjavaagent
を作成してデバッグを行います。
- SwingアプリケーションのLookAndFeelを外部から切り替える
Swing
アプリケーションのLookAndFeel
をagent
を使って外部から切り替えてデバッグします。
-g
オプションを使用してコンパイル
NetBeans
でソースにブレークポイントを設定し、Swing
コンポーネントのソースにステップインすると、「変数の情報を使用できません。ソースは-g
オプションを使用せずにコンパイルされています」と表示され、値は不明となる- javac
-g
オプション-g ローカル変数を含むすべてのデバッグ情報を生成します。デフォルトでは、行番号およびソース・ファイル情報だけが生成されます。
- java - debug jdk source can't watch variable what it is - Stack Overflowを参考に、
%JAVA_HOME%/src.zip/javax/swing
以下のソースをコピーし、以下のようなバッチを実行@echo off setlocal rem set RT_JAR=%JAVA_HOME%\jre\lib\rt.jar set RT_JAR=rt.jar dir /B /S /X src\*.java > filelist.txt "%JAVA_HOME%\bin\javac" -g -classpath "%RT_JAR%" -sourcepath src -d debug @filelist.txt > log.txt 2>&1 "%JAVA_HOME%\bin\jar" cf0 rt_debug.jar debug/*
- 生成された
rt_debug.jar
を、%JAVA_HOME%\lib\endorsed
(なければ管理者になって作成)にコピー- Java推奨標準優先メカニズム
- 「この機能は非推奨であり、今後のリリースで削除される予定です。」、
JDK 9
では使用できない?
Javadoc 翻訳
Javadocに移動
JRuby
JRubyに移動
Java その他
- 環境変数JAVA_HOMEを変更して使用するJDKを切り替える
- 環境変数
JAVA_HOME
を変更するバッチファイルを作成して、コマンドプロンプトで使用するJDK
を切り替えます。
- 環境変数
- Rhinoでgoogle-prettify.jsを実行する
Rhino
でgoogle-prettify.js
を実行し、ソースコードをハイライトされたHtml
(google sites
用)に変換します。
- JNIでJFrameのHWNDを取得
JNI
(Java Native Interface
)でJFrame
(SunAwtFrame
)のHWND
(ウィンドウハンドル)を取得します。
- Java API Doc の「日本語、英語」をブックマークレットで切り替える
Java メモ
環境変数
- http://cr.openjdk.java.net/~gbenson/zero-08/raw_files/new/hotspot/src/share/vm/utilities/vmError.cpp
// List of environment variables that should be reported in error log file. const char *env_list[] = { // All platforms "JAVA_HOME", "JRE_HOME", "JAVA_TOOL_OPTIONS", "_JAVA_OPTIONS", "CLASSPATH", "JAVA_COMPILER", "PATH", "USERNAME", // Env variables that are defined on Solaris/Linux "LD_LIBRARY_PATH", "LD_PRELOAD", "SHELL", "DISPLAY", "HOSTTYPE", "OSTYPE", "ARCH", "MACHTYPE", // defined on Linux "LD_ASSUME_KERNEL", "_JAVA_SR_SIGNUM", // defined on Windows "OS", "PROCESSOR_IDENTIFIER", "_ALT_JAVA_HOME_DIR", (const char *)0 };
コマンドプロンプトからデフォルトのロケールを変更
> javac -J-Duser.language=en Test.java
> java -Duser.language=en Test
- 国際化についての FAQ
アプリケーションの外部からデフォルトのロケールを設定できますか。 使用している Java プラットフォームの実装によって異なります。通常、初期のデフォルトロケールは、ホストオペレーティングシステムのロケールによって決まります。Sun の JRE のバージョン 1.4 以降では、コマンド行から user.language、user.country、および user.variant の各システムプロパティを設定することで、初期のデフォルトロケールを変更できます。たとえば、初期のデフォルトロケールとして Locale("th", "TH", "TH") を選択するには、次のコマンドを使用します。 java -Duser.language=th -Duser.country=TH -Duser.variant=TH MainClass この機能を使用できない実行環境もあるため、この機能はテスト目的だけに使用してください。
コード整形
個人的に、Java
のソースコードのインデントは、エディタでは4space
、Web
サイトにソースコードを表示する場合は2space
にしているので、xyzzy
のfilter-buffer
(C-x #
)でastyle
を呼び出して以下のように整形。
astyle --style=java --mode=java --indent=spaces=2
コマンドラインなどから、ファイルを指定する場合も同様。
> astyle --style=java --mode=java --indent=spaces=4 MainPanel.java
Markdown
形式のStack Overflow
などにソースコードを貼り付ける場合は、以下のようにして、行頭にタブ(またはスペース4
つ)を追加。
astyle --style=java --mode=java --indent=spaces=2 < Hoge.java | sed -e "s/^\(.*\)$/\t\1/" > /dev/clipboard astyle --style=java --mode=java --indent=spaces=2 | sed -e "s/^\(.*\)$/\t\1/" astyle --style=java --mode=java --indent=spaces=2 | sed -e "s/\A\(.*\)\z/ \1/"
Checkstyle(sun_checks.xml)
astyle --style=java --mode=java --indent=spaces=4 --pad-oper --pad-header --unpad-paren
キャストの後にスペースを入れる方法は?
int h = (int)(.5 + baseline / height); //(int)の後に空白を入れたい... int h = (int) (.5 + baseline / height);
asyle 2.04
$ astyle --version Artistic Style Version 2.04
- 以下の様なソースコード(最後の
}
の直後にEOF
)をastyle
で変換すると、余計な}
が追加される?
class Hoge
{
public static void main(String[] args)
{
System.out.println("aaaaaaa");
}
}
- Artistic Style / Bugs / #305 Last character always repeated in output when reading from stdin
- 次バージョンで修正される模様
ブラウザで表示されているソースコードのコピー
JavaScriptでpreタグで囲まれたソースコードをtextareaにコピーするに移動
偶数・奇数の判断
public class EvenOddTest {
public static void main(String... args) {
for (int i = 0; i < 5; i++) {
if (i % 2 == 0) {
System.out.format("%d is even%n", i);
} else {
System.out.format("%d is odd%n", i);
}
if ((i & 1) == 0) { // ビット演算子の & は、== より優先順位が低いので(i & 1)と囲む必要がある
System.out.format("%d is even%n", i);
} else {
System.out.format("%d is odd%n", i);
}
}
}
}
正の数と負の数を反転
public class InvertSignedNumbersTest {
private static void print(int i) {
System.out.println(i);
System.out.format(" :%d\n", ~i + 1);
System.out.format(" :%d\n", (i > 0 ? -1 : 1) * Math.abs(i));
System.out.format(" :%d\n", ~--i);
}
public static void main(String... args) {
print(256);
print(-256);
print(Integer.MAX_VALUE);
print(Integer.MIN_VALUE + 1);
print(Integer.MIN_VALUE);
}
}