java.lang.Class.getMethod()とリフレクション
Javaのリフレクションとは変数に格納した「文字列」を使ってクラスを生成したりメソッドを呼び出したりできる機能。
リフレクション使ってメソッドをコールした場合、そのメソッドの例外はinvoke()でInvocationTargetExceptionでラッピングされて例外発生する。 以下は本家のサイトだけれども、正直なに言ってるかわからない。
なので、以下がよいかな。
http://www.ne.jp/asahi/hishidama/home/tech/java/reflection.html http://www.ne.jp/asahi/hishidama/home/tech/java/exception.html#InvocationTargetException
VMware Fusion上のWindows10をCreatorsUpdateしたらプリンタが見えなくなった件
以前、Windows7からWindows10にアップデートしたときもそうなったのだが、 VMware Fusion上のWindows10をCreatorsUpdateしたらプリンタがなくっていた。 以前にも、
(Windows8からWindows10にアップグレードしたらWSDプリンタが見えなくなって困った件)http://kohchi.hatenablog.com/entry/20160312/1457757349
で書いていた通りで、インストールしてみても同じように同じセグメントまたはUSB接続でないとだめ。 そこで再起動してみたが残念ながらダメ。
その日は諦めて色々考えてみたところ、VMWareではプリンタのパススルー(ThinPrint)というのがあるので それを試してみた。
(VMware Fusion で仮想マシン内から印刷する (2079841))https://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=2079841
- 設定を選ぶ
ここでプリンタをクリック。
- 共有する
でプリンタ(WSDでないのが)見えるようになった。
その時、ふと、プリンタの電源をつけてvmのWindows10を起動すると?と思い、 パススルーの設定をやめて再度起動し直したところ、WSD設定のプリンタが復活。
大きなアップデートのあとはプリンタの電源を入れておいて起動するか プリンタの設定を変えてみる
ってことで見えるようになる???
毎度こんなんじゃ困るんだけどな。
Javaのオートボクシング
プリミティブ型とラッパークラスの変換を自動で行ってくれる仕組み
Java 5からの機能で便利なのかもしれないけどコードレビューしていると結構嫌よね。
public void foo() { Integer iObject = new Integer(10); int i = 0, j; iObject = i; // オートボクシング // iObject = Integer.valueOf(i); j = iObject; // アンボクシング、iObjectがnullだとNullPointerException // j = iObject.intValue(); }
ただし、Eclipseだと設定によって警告を出せるらしい
[ウィンドウ]->[設定]->[Java]->[コンパイラー]->[エラー/警告]->[潜在的なプログラミングの問題] を展開して[ボクシングおよびアンボクシング変換]を「エラー、警告、無視」から選択可能。デフォルトは「無視」。
javaのHashMap初期化
Java.util.HashMapの初期化方法。すぐ忘れるので備忘録。
package com.foobar.console; import java.util.HashMap; import java.util.Map; public class Test01 { public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>() { {put("fooKey", "fooVal");} {put("barKey", "barVal");} }; if (!map.containsKey("noKey")) { System.out.println("There is no key."); } System.out.println(map.get("fooKey")); System.out.println(map.get("barKey")); } }
参考は以下(作成から一年以上経過しているから試してみたけど問題なし)。
Windows10の時刻設定がソウル(KST)になっている件
知らない間にWindows 10 Professionalの時刻設定がソウルになっていた。
Eclipseのサーバログを見ていて時刻がKSTになっていたのでEclipseの設定なのかなと思っていたら Windows側の設定でした。
時差もソウルと変わらないみたいなのでいままで気がつかなかった。そんな設定していないのになんで?
環境は以下
- Windows10 Professional on VMware Fusion 8.5.7
eclipseにspringプロジェクトを構築
以下のqiitaの記事を参考にして自分も構築してみた。
うちでは4.5なので一応ログっておく。
ソフトウェア | バージョン |
---|---|
eclipse | eclipse pleiades 4.5 MARS |
Java | 1.6 or 1.7 or 1.8 |
Tomcat | 1.8 |
まずはプラグインのSpring Tool Suite (STS)をEclipseに追加
- [ヘルプ]の[Eclipseマーケットプレース]を選択。
- [検索]窓にSTSを入力して検索実行(虫眼鏡をクリック)。
- 現時点での最新[Spring Tool Suite (STS) for Eclipse 3.8.4 RELEASE]を[インストール]。
- [選択されたフィーチャーの確認]で[確認]をクリック。
- [ライセンスのレビュー]で[使用条件の条項に同意します]をクリックし[完了]をクリック。
- Eclipseを再起動するかどうかを聞いてくるので再起動する。
- ようこそ画面になるけど×ボタンで閉じる。
プロジェクト作成
- [ウィンドウ]->[パースペクティブ]->[パースペクティブを開く]->[その他]から[spring]を選択。
- [パッケージエクスプローラー]で右クリックして[新規]->[Spring Legacy Project]を選択。
- [プロジェクト名]にプロジェクト名を入力し、[テンプレート]では[Spring MVC Project]を選択して[次へ]を選択。
- 必要なものをダウンロードするかを聞いてくるインポートダイアログを表示するので[はい]を選択。
- パッケージ名を入力し[完了]を選択。
- 非力なマシンだと意外にビルドに時間がかかるがこんなふうになっているはず。
サーバ設定と動作確認
- [サーバー]ビューを表示し[使用可能なサーバーがありません。このリンクをクリックして新規サーバーを作成してください…]をクリック。
- [サーバーのタイプを選択]では[Tomcat v8.0 サーバー]を選択、サーバー名は変更したい場合は変更する。
- [サーバー]ビューから今作ったサーバー名をダブルクリックする。
- [概要]が表示されているので[モジュール]タブを選択。
- [Webモジュールの追加]をクリック。
- SpringTestが表示されているのでクリックして[OK]をクリック。
- “*"が表示されているので、設定を保存(CTRL+S)。
- サーバー名を右クリックして[開始]で起動する。
- [サーバー名]の右側が[始動済み, 同期済み]になっている。
- ブラウザでアクセスしてみる。
■
MacOSXでrpm2cpio
rpm2cpioをMacにインストールする場合brew辺りを使うみたいだが、以下のサイトにシェルがあった。
rpmのヘッダ部分を解析してcpioを取り出すツール。Macでrpmの中身を見たいなんてことは滅多にないのでシェルで提供されているこのツールはグッド。ただ、圧縮形式にgzip/bunzip2/xzがあるのでxzについてはbrewやMacPortsでインストールしておく。
$ chmod 755 rpm2cpio.sh $ cat rpm2cpio.sh #!/bin/sh pkg=$1 if [ "$pkg" = "" -o ! -e "$pkg" ]; then echo "no package supplied" 1>&2 exit 1 fi leadsize=96 o=`expr $leadsize + 8` set `od -j $o -N 8 -t u1 $pkg` il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5` dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9` # echo "sig il: $il dl: $dl" sigsize=`expr 8 + 16 \* $il + $dl` o=`expr $o + $sigsize + \( 8 - \( $sigsize \% 8 \) \) \% 8 + 8` set `od -j $o -N 8 -t u1 $pkg` il=`expr 256 \* \( 256 \* \( 256 \* $2 + $3 \) + $4 \) + $5` dl=`expr 256 \* \( 256 \* \( 256 \* $6 + $7 \) + $8 \) + $9` # echo "hdr il: $il dl: $dl" hdrsize=`expr 8 + 16 \* $il + $dl` o=`expr $o + $hdrsize` EXTRACTOR="dd if=$pkg ibs=$o skip=1" COMPRESSION=`($EXTRACTOR |file -) 2>/dev/null` if echo $COMPRESSION | grep -q gzip; then DECOMPRESSOR=gunzip elif echo $COMPRESSION | grep -q bzip2; then DECOMPRESSOR=bunzip2 elif echo $COMPRESSION | grep -q xz; then DECOMPRESSOR=unxz elif echo $COMPRESSION | grep -q cpio; then DECOMPRESSOR=cat else # Most versions of file don't support LZMA, therefore we assume # anything not detected is LZMA DECOMPRESSOR=`which unlzma 2>/dev/null` case "$DECOMPRESSOR" in /* ) ;; * ) DECOMPRESSOR=`which lzmash 2>/dev/null` case "$DECOMPRESSOR" in /* ) DECOMPRESSOR="lzmash -d -c" ;; * ) DECOMPRESSOR=cat ;; esac ;; esac fi $EXTRACTOR 2>/dev/null | $DECOMPRESSOR $ ./rpm2cpio.sh rpm-build-5.4.10-10-mdv2012.0.x86_64.rpm | cpio -tv -rwxr-xr-x 1 root wheel 963 Nov 6 2012 ./usr/bin/gendiff -rwxr-xr-x 1 root wheel 305 Nov 6 2012 ./usr/bin/multiarch-platform -rwxr-xr-x 1 root wheel 23712 Nov 6 2012 ./usr/bin/rpmbuild -rwxr-xr-x 1 root wheel 719850 Nov 6 2012 ./usr/lib/rpm/bin/api-sanity-autotest.pl -rwxr-xr-x 1 root wheel 721319 Nov 6 2012 ./usr/lib/rpm/bin/api-sanity-checker.pl -rwxr-xr-x 1 root wheel 10568 Nov 6 2012 ./usr/lib/rpm/bin/dbsql -rwxr-xr-x 1 root wheel 32648 Nov 6 2012 ./usr/lib/rpm/bin/debugedit -rwxr-xr-x 1 root wheel 13997 Nov 6 2012 ./usr/lib/rpm/bin/install-sh -rwxr-xr-x 1 root wheel 3538 Nov 6 2012 ./usr/lib/rpm/bin/mkinstalldirs -rwxr-xr-x 1 root wheel 17311 Nov 6 2012 ./usr/lib/rpm/bin/pom2spec -rwxr-xr-x 1 root wheel 19488 Nov 6 2012 ./usr/lib/rpm/bin/rpmcache -rwxr-xr-x 1 root wheel 10816 Nov 6 2012 ./usr/lib/rpm/bin/rpmcmp -rwxr-xr-x 1 root wheel 20400 Nov 6 2012 ./usr/lib/rpm/bin/rpmdeps -rwxr-xr-x 1 root wheel 32592 Nov 6 2012 ./usr/lib/rpm/bin/rpmdigest -rwxr-xr-x 1 root wheel 24856 Nov 6 2012 ./usr/lib/rpm/bin/rpmkey -rwxr-xr-x 1 root wheel 10704 Nov 6 2012 ./usr/lib/rpm/bin/rpmrepo -rwxr-xr-x 1 root wheel 10568 Nov 6 2012 ./usr/lib/rpm/bin/sqlite3 -rwxr-xr-x 1 root wheel 1452 Nov 6 2012 ./usr/lib/rpm/brp-compress -rwxr-xr-x 1 root wheel 1418 Nov 6 2012 ./usr/lib/rpm/brp-java-gcjcompile -rwxr-xr-x 1 root wheel 677 Nov 6 2012 ./usr/lib/rpm/brp-nobuildrootpath -rwxr-xr-x 1 root wheel 951 Nov 6 2012 ./usr/lib/rpm/brp-python-bytecompile -rwxr-xr-x 1 root wheel 1075 Nov 6 2012 ./usr/lib/rpm/brp-sparc64-linux -rwxr-xr-x 1 root wheel 561 Nov 6 2012 ./usr/lib/rpm/brp-strip -rwxr-xr-x 1 root wheel 853 Nov 6 2012 ./usr/lib/rpm/brp-strip-comment-note -rwxr-xr-x 1 root wheel 758 Nov 6 2012 ./usr/lib/rpm/brp-strip-shared -rwxr-xr-x 1 root wheel 465 Nov 6 2012 ./usr/lib/rpm/brp-strip-static-archive -rwxr-xr-x 1 root wheel 569 Nov 6 2012 ./usr/lib/rpm/check-files -rwxr-xr-x 1 root wheel 2804 Nov 6 2012 ./usr/lib/rpm/check-multiarch-files -rwxr-xr-x 1 root wheel 283 Nov 6 2012 ./usr/lib/rpm/executabledeps.sh -rwxr-xr-x 1 root wheel 9623 Nov 6 2012 ./usr/lib/rpm/find-debuginfo.sh -rwxr-xr-x 1 root wheel 7912 Nov 6 2012 ./usr/lib/rpm/find-lang.sh -rwxr-xr-x 1 root wheel 4188 Nov 6 2012 ./usr/lib/rpm/find-prov.pl -rwxr-xr-x 1 root wheel 44 Nov 6 2012 ./usr/lib/rpm/find-provides.perl -rwxr-xr-x 1 root wheel 3571 Nov 6 2012 ./usr/lib/rpm/find-req.pl -rwxr-xr-x 1 root wheel 44 Nov 6 2012 ./usr/lib/rpm/find-requires.perl -rwxr-xr-x 1 root wheel 489 Nov 6 2012 ./usr/lib/rpm/fontconfig.prov -rwxr-xr-x 1 root wheel 4535 Nov 6 2012 ./usr/lib/rpm/gem_helper.rb -rwxr-xr-x 1 root wheel 794 Nov 6 2012 ./usr/lib/rpm/getpo.sh -rwxr-xr-x 1 root wheel 1303 Nov 6 2012 ./usr/lib/rpm/gstreamer.sh -rwxr-xr-x 1 root wheel 574 Nov 6 2012 ./usr/lib/rpm/haskelldeps.sh drwxr-xr-x 2 root wheel 0 Nov 6 2012 ./usr/lib/rpm/helpers -rwxr-xr-x 1 root wheel 62 Nov 6 2012 ./usr/lib/rpm/helpers/makeshlibs -rwxr-xr-x 1 root wheel 4451 Nov 6 2012 ./usr/lib/rpm/http.req -rwxr-xr-x 1 root wheel 1928 Nov 6 2012 ./usr/lib/rpm/javadeps.sh -rwxr-xr-x 1 root wheel 1821 Nov 6 2012 ./usr/lib/rpm/kmod-deps.sh -rwxr-xr-x 1 root wheel 707 Nov 6 2012 ./usr/lib/rpm/libtooldeps.sh -rw-r--r-- 1 root wheel 22769 Nov 6 2012 ./usr/lib/rpm/macros.rpmbuild -rwxr-xr-x 1 root wheel 2406 Nov 6 2012 ./usr/lib/rpm/mkmultiarch -rwxr-xr-x 1 root wheel 1666 Nov 6 2012 ./usr/lib/rpm/mono-find-provides -rwxr-xr-x 1 root wheel 4914 Nov 6 2012 ./usr/lib/rpm/mono-find-requires -rwxr-xr-x 1 root wheel 5700 Nov 6 2012 ./usr/lib/rpm/osgideps.pl -rwxr-xr-x 1 root wheel 6269 Nov 6 2012 ./usr/lib/rpm/perl.prov -rwxr-xr-x 1 root wheel 9502 Nov 6 2012 ./usr/lib/rpm/perl.req -rwxr-xr-x 1 root wheel 8846 Nov 6 2012 ./usr/lib/rpm/perldeps.pl -rwxr-xr-x 1 root wheel 1115 Nov 6 2012 ./usr/lib/rpm/php.prov -rwxr-xr-x 1 root wheel 2586 Nov 6 2012 ./usr/lib/rpm/php.req -rwxr-xr-x 1 root wheel 1380 Nov 6 2012 ./usr/lib/rpm/pkgconfigdeps.sh -rwxr-xr-x 1 root wheel 433 Nov 6 2012 ./usr/lib/rpm/pythondeps.sh -rwxr-xr-x 1 root wheel 8161 Nov 6 2012 ./usr/lib/rpm/pythoneggs.py drwxr-xr-x 2 root wheel 0 Nov 6 2012 ./usr/lib/rpm/qf -rw-r--r-- 1 root wheel 664 Nov 6 2012 ./usr/lib/rpm/qf/deb_Packages -rw-r--r-- 1 root wheel 712 Nov 6 2012 ./usr/lib/rpm/qf/deb_Sources -rw-r--r-- 1 root wheel 421 Nov 6 2012 ./usr/lib/rpm/qf/deb_control -rw-r--r-- 1 root wheel 47 Nov 6 2012 ./usr/lib/rpm/qf/deb_md5sums -rw-r--r-- 1 root wheel 81 Nov 6 2012 ./usr/lib/rpm/qf/deb_postinst -rw-r--r-- 1 root wheel 81 Nov 6 2012 ./usr/lib/rpm/qf/deb_postrm -rw-r--r-- 1 root wheel 77 Nov 6 2012 ./usr/lib/rpm/qf/deb_preinst -rw-r--r-- 1 root wheel 77 Nov 6 2012 ./usr/lib/rpm/qf/deb_prerm -rw-r--r-- 1 root wheel 253 Nov 6 2012 ./usr/lib/rpm/qf/nix_meta -rw-r--r-- 1 root wheel 1301 Nov 6 2012 ./usr/lib/rpm/qf/psq_pkgng_yaml -rw-r--r-- 1 root wheel 243 Nov 6 2012 ./usr/lib/rpm/qf/wdj_l10n_sqlite -rw-r--r-- 1 root wheel 82 Nov 6 2012 ./usr/lib/rpm/qf/wdj_srpm -rw-r--r-- 1 root wheel 623 Nov 6 2012 ./usr/lib/rpm/qf/wdj_srpm_mongo -rw-r--r-- 1 root wheel 303 Nov 6 2012 ./usr/lib/rpm/qf/wnh_filelists_mongo -rw-r--r-- 1 root wheel 298 Nov 6 2012 ./usr/lib/rpm/qf/wnh_filelists_yaml -rw-r--r-- 1 root wheel 408 Nov 6 2012 ./usr/lib/rpm/qf/wnh_other_mongo -rw-r--r-- 1 root wheel 373 Nov 6 2012 ./usr/lib/rpm/qf/wnh_other_yaml -rw-r--r-- 1 root wheel 1373 Nov 6 2012 ./usr/lib/rpm/qf/wnh_primary_mongo -rw-r--r-- 1 root wheel 1369 Nov 6 2012 ./usr/lib/rpm/qf/wnh_primary_yaml -rw-r--r-- 1 root wheel 203 Nov 6 2012 ./usr/lib/rpm/qf/xiu_stdenv -rw-r--r-- 1 root wheel 177 Nov 6 2012 ./usr/lib/rpm/qf/yum_filelists_sqlite -rw-r--r-- 1 root wheel 277 Nov 6 2012 ./usr/lib/rpm/qf/yum_filelists_xml -rw-r--r-- 1 root wheel 317 Nov 6 2012 ./usr/lib/rpm/qf/yum_other_sqlite -rw-r--r-- 1 root wheel 387 Nov 6 2012 ./usr/lib/rpm/qf/yum_other_xml -rw-r--r-- 1 root wheel 1177 Nov 6 2012 ./usr/lib/rpm/qf/yum_primary_sqlite -rw-r--r-- 1 root wheel 1887 Nov 6 2012 ./usr/lib/rpm/qf/yum_primary_xml -rwxr-xr-x 1 root wheel 3257 Nov 6 2012 ./usr/lib/rpm/rubygems.rb -rwxr-xr-x 1 root wheel 3624 Nov 6 2012 ./usr/lib/rpm/symclash.py -rwxr-xr-x 1 root wheel 412 Nov 6 2012 ./usr/lib/rpm/symclash.sh -rwxr-xr-x 1 root wheel 2050 Nov 6 2012 ./usr/lib/rpm/u_pkg.sh -rwxr-xr-x 1 root wheel 98508 Nov 6 2012 ./usr/lib/rpm/vcheck -rwxr-xr-x 1 root wheel 9480 Nov 6 2012 ./usr/lib/rpm/vpkg-provides.sh -rwxr-xr-x 1 root wheel 2659 Nov 6 2012 ./usr/lib/rpm/vpkg-provides2.sh -rw-r--r-- 1 root wheel 2828 Nov 6 2012 ./usr/share/man/man8/rpmbuild.8.xz -rw-r--r-- 1 root wheel 612 Nov 6 2012 ./usr/share/man/man8/rpmdeps.8.xz -rwxr-xr-x 2 root wheel 0 Nov 6 2012 ./usr/lib/rpm/bin/luac -rwxr-xr-x 2 root wheel 113320 Nov 6 2012 ./usr/lib/rpm/bin/rpmluac link to ./usr/lib/rpm/bin/luac -rwxr-xr-x 2 root wheel 0 Nov 6 2012 ./usr/lib/rpm/bin/lua -rwxr-xr-x 2 root wheel 167064 Nov 6 2012 ./usr/lib/rpm/bin/rpmlua link to ./usr/lib/rpm/bin/lua 4365 blocks $