モノワスレ

ブログに書いて忘れましょう

EclipseでGradleプロジェクトを作る

前提

GradleでJavaの素の状態を作る

  • Eclipseでテンプレを利用してとりあえずディレクトリ構成などを作る

手順

  1. new - other
  2. Gradle - [Gradle Project]
  3. [Next]
  4. [Sample project:] - [Java Quickstart]

Webアプリに対応させる

対象

  • Eclipse WebToolPlatform
  • gradle war

手順

  1. プラグイン追加

     apply plugin: 'eclipse-wtp'
     apply plugin: 'war'
    
  2. build.gradle に eclipse wtp の定義を追加

      eclipse {
          // Dynamic Web Project
          wtp {
              component {
                  // eclipse wtp context_path
                  contextPath = '/test_gradle'
              }
              facet {
                  facet name: 'java', version: '1.7'
                  facet name: 'jst.web', version: '3.0'
              }
          }
      }
    
  3. 不要であれば build.gradle 内にテンプレ出力された以下の定義を消す
    • dependencies 内
    • uploadArchives
  4. ディレクトリを追加
    • war プラグインが利用するWebアプリのルートは src/main/webapp
  5. テスト用ファイルを追加
    • webapp/index.jsp

        <%= "test" %>
      
  6. Gradle を諸々有効にする
    • Gradle - [Enable DSL Support]
    • Gradle - [Enable Dependency management]
  7. Gradle 設定をリフレッシュする
    • Gradle - [Refresh All]
    • これをやることで今までの設定がプロジェクトに反映される
  8. tomcat に追加してサーバーを起動する
  9. URLアクセスする

      http://localhost:8080/test_gradle
    

JavaMailをGradle、JREで使いたい場合

前提

  • JavaSEとかJavaEEとか使わないんだよって方
  • MavenじゃなくてGradleなんだよって方

やり方1(はずれ)

  • build.gradle をいじって依存関係を解決させるだけ
  • リポジトリが見えてないので。

build.gradle

repositories { 
    mavenCentral()
    maven {
        url "http://download.java.net/maven/2",                              // Java.NET
    }
  }

dependencies {
    compile 'javax.mail:javax.mail-api:1.5.2'
    complie 'com.sun.mail:javax.mail:1.5.2'
}

備考

  • 出たエラーとか晒しとく
 Caused by: java.lang.ClassNotFoundException: com.sun.mail.util.MailLogger
        at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

やり方2

  • 1.5.2にしたらヨロシクなかったので1.4.7に戻す。
  • これで一旦解決。(暇があったらできなくなった理由を見ておく)
dependencies {
    compile 'javax.mail:javax.mail-api:1.4.7'
}

JMX接続しようとして接続できない場合

前提

tomcat の利用状況を把握しようとしている場合

jconsole から JMX 接続しようとして接続できない場合

「接続に失敗しました: 再施行しますか。」と表示される

確認手順

  1. プロセスを確認

    $ ps aux | grep tomcat

    • 以下の様な表示があれば大丈夫だと思う

      -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=10080

  2. iptables 確認

    $ /sbin/iptables -L

    • 許可していればOK。そもそもFW無効にしていたら無関係
  3. hosts 確認

    $ hostname -i

    • 127.0.0.1 が返ってくるようならアウト
    • マシン名に対してIPが返ってくるように hosts を編集する
    • 設定したら tomcat 再起動

Chrome で Flash Player デバッグプレーヤー有効化

そもそも

  • デバッグしたいんだけど、、、
  • デフォルトではデバッグできないのね。。って感じで。(当たり前)

手順

  1. プラグインコンテンツデバッガーをダウンロードします

    http://www.adobe.com/jp/support/flashplayer/downloads.html

  2. Chromeを再起動します。

  3. URLに about:plugins と入力します。
  4. 右上の 詳細 をクリックします。
  5. 2つFlashPlayerが入っているので赤枠の方を 無効にする にします。
  6. Chromeを再起動します。
  7. あとはご自由にデバッグで起動してブレークポイントを張ったりエラーのトレースがポップアップされたりするようになります。

補足

  • 古いプレーヤーを入れたかったりする場合は、URLにあるアンインストーラーで削除してからインストールする必要があったりします。
  • InternetExplorerのActiveX版でやろうと思ってもなんか面倒くさいのでChromeの方が作業しやすいかと思います。

Windows7 で Rails + MySQL5 環境作成

前提

Windows7 + MySQL5(Linux) + Rails で環境作ろうとしていた
案の定ハマる。。

手順

  • gem で mysql をインストール
gem install mysql -- --with-mysql-dir=\"C:\MySQL\mysql-noinstall-5.0.96-win32\mysql-5.0.96-win32\"

MySQLネクターをどこからか探して入れとく

  • ライブラリー(libmysql.ddl)を ruby\bin へコピーする

※ 最初の手順だけだと rake でコケる

http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip/from/pick

※古いバージョンだとこれまたコケる。 gem install した時に表示されるURLからダウンロードすると良いっぽい。

Java からの SSH接続でたまに verify false になる

前提

jsch を使って Java から SFTP 接続するプログラムを動かしてた。

現状

たまに以下の様な謎のエラーが発生する。

jcraft.jsch.JSchException: verify: false 
     at jcraft.jsch.Session.connect(Session.java:309) 
     at jcraft.jsch.Session.connect(Session.java:162)

ほんとたまに。。
再現の仕方がよくわからない。

で、調べたらお馴染みのStackOverflowにあった。
http://stackoverflow.com/questions/12279836/ssh-using-jschexception-verify-false-sometimes-fails

使ってるバージョンが jsch-0.1.44.jar だったので、0.1.5 にあげて様子をみてみる事にする。

追記

上記の対応でうまくいきました。

javax.media.jai.JAI を Maven で使いたい

なんで?

Eclipse だけ追加しても、見つからなかった。
普通に使う分には、たいてい見つかっていたので、ちょっと「?」となったので備忘のために記載しておく。

結論

を追加すればよかった。

<project>

	<!-- これが重要 -->
	<repositories>
		<repository>
			<id>thirdparty-releases</id>
			<name>JBoss Thirdparty Releases</name>
			<url>https://repository.jboss.org/nexus/content/repositories/thirdparty-releases</url>
		</repository>
	</repositories>

	<dependencies>
		<dependency>
			<groupId>javax.media</groupId>
			<artifactId>jai-core</artifactId>
			<version>1.1.3</version>
		</dependency>

	</dependencies>

</project>