わんちゅう日記

気ままにヒトリゴト

毎年恒例、丸善 丸の内本店でカレンダーを買う行事です。
今年は同じ期間に開催されているの催し物の関係なのか、ギャラリー内ではなく文具売り場での開催でしたね(海外カレンダーはギャラリー内)。その為、なんとなくいつもより品数が少ないような気がしました(特に日本語カレンダーの風景写真系)。それでも気に入るものがあったのでそれを購入しました。

続きを読む

Visual Studioが複数インストールされている環境では、ソリューションをダブルクリックしても思っていたVisual Studioで開かれないことがあるかと思います。そんなときの対処法の一例です。

続きを読む

昨今、機械学習や画像処理でGPUが使える、使えないによって、Javaの依存関係を切り替えなきゃしゃーないってプロジェクトもあるかと思います。こんな時、ビルドする度にpom.xmlの依存関係を手で書き換えるのも凄く面倒。そこで、Mavenのプロファイル機能を使ってうまく対応できないか、検証してみました。

続きを読む

今まで仕事で使用してきたバージョン管理システムはSubversion(SVN)がほぼすべてで、現在OSSで欠かせないGitは未経験。今のプロジェクトはその辺好きにして良いとのことなので、Gitを使うことにしました。
とは言え、オンライン上にソースを置けるわけでもないため、GitHubでもBitbucketでもなく、GitBucketでローカルなGit環境を構築することにしました。

完成目標

次のような感じに使えるように環境を構築します。
  • ローカルネットワーク内のコンピューター複数台からMac miniのホスト名でアクセスする
  • Mac miniの電源さえ入っていればGitBucketが利用できるようにする
  • GitBucketのデータ一式を置く場所(ディレクトリ)は指定する
今回特別なのが後2点。通常、OS起動後、何かしらのユーザーでログインしてからアプリケーションを立ち上げると思いますが、今回用意したMac miniはサーバ専用機ではなく開発兼用機で、かつ利用ユーザーも固定されていません。なので、いわゆる「デーモン(Windowsで言えばサービス)」としてGitBucketを起動させ、利用ユーザーに依存しない環境を構築します。で、データ一式はデフォルトではユーザーのホームディレクトリに置かれるのですが、前述の理由のためユーザーに依存しない場所に置きます。

今回利用するソフトウェアのバージョンは下記の通りです。
  • macOS High Sierra
  • GitBucket 4.21.2
  • Oracle Java Development Kit 8 update 162
macOS向けのGitBucketはHomebrewでインストール可能ですが、今回は手動インストールです。また、GitBucket 4.21.2はJava 8が必要なので、Oracleからダウンロードしたものをインストールしてあります。

続きを読む

「テストをEclipse上で実行してOKが出たら、カバレッジを取るためにMavenでテストを実行」てな感じで作業を進めてるのですが、Maven実行時に下記のような例外が発生することがあります。
java.lang.UnsatisfiedLinkError: Native Library C:\Java\jdk1.8.0_144_x64\jre\bin\jpeg.dll already loaded in another classloader
  at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1907)
  at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1845)
  at java.lang.Runtime.loadLibrary0(Runtime.java:870)
  at java.lang.System.loadLibrary(System.java:1122)
  at com.sun.imageio.plugins.jpeg.JPEGImageWriter$1.run(JPEGImageWriter.java:180)
  at com.sun.imageio.plugins.jpeg.JPEGImageWriter$1.run(JPEGImageWriter.java:178)
  at java.security.AccessController.doPrivileged(Native Method)
  at com.sun.imageio.plugins.jpeg.JPEGImageWriter.(JPEGImageWriter.java:177)
  at com.sun.imageio.plugins.jpeg.JPEGImageWriterSpi.createWriterInstance(JPEGImageWriterSpi.java:96)
  at javax.imageio.spi.ImageWriterSpi.createWriterInstance(ImageWriterSpi.java:351)
  at javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:843)
  at javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:827)
  at javax.imageio.ImageIO.getWriter(ImageIO.java:1596)
  at javax.imageio.ImageIO.write(ImageIO.java:1520)
  ...
試している限りでは次のような条件で発生するようです。
  1. 複数のテストクラスでImageIOを利用するクラスが呼ばれる
  2. テスト開始後、2つ目のテストクラス実行時に上記例外が発生する
UnsatisfiedLinkErrorが発生した後、同テストクラス内の他のImageIOを利用するクラスを利用するテストケースでは、次の例外が発生します。
java.lang.NoClassDefFoundError: Could not initialize class com.sun.imageio.plugins.jpeg.JPEGImageWriter
  at com.sun.imageio.plugins.jpeg.JPEGImageWriterSpi.createWriterInstance(JPEGImageWriterSpi.java:96)
  at javax.imageio.spi.ImageWriterSpi.createWriterInstance(ImageWriterSpi.java:351)
  at javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:843)
  at javax.imageio.ImageIO$ImageWriterIterator.next(ImageIO.java:827)
  at javax.imageio.ImageIO.getWriter(ImageIO.java:1596)
  at javax.imageio.ImageIO.write(ImageIO.java:1520)
  ...
目的のクラスが読み込まれてないので、NoClassDefFoundErrorが発生するのも当然ですね。
なお、環境は次の通りです。
  • Java SE Development Kit 8u144 (ImageIOを含む)
  • Apache Maven 3.5.0
  • PowerMock 1.7.3
続きを読む

このページのトップヘ