拡張機能のコンパイル

一部の拡張機能(nlMovieFetcher)などは、本体(Nicocache_nl)とは別にコンパイルが必要になる。特にExtensionsフォルダ内に.javaファイルのみ存在し、.classファイルが無い場合がこれに該当する。
極稀にすでにコンパイル済みで配布されている場合もある。(NGCommentExtensionなど)
拡張機能(extensions)の更新のとき、当然javaファイルの上書きだけでは不十分で、classファイルをコンパイルして新しく作り直させなければならない!

〜.javaファイル(javaソースファイル)の実体は普通のテキストファイルと同じであり、Java言語で書かれたプログラミングコードの羅列となっている。これをコンパイルすることでJava(正確にはJVM、Java Virtual Machine、Java仮想マシン)上で実行可能な〜.classファイル(javaバイトコードファイル)になる。更にJVMがネイティブコード(機械語)に変換することで初めてコンピュータ上でJavaで書かれたプログラムを動かすことが出来るようになる。コンピュータが直接解釈可能なのは機械語のみである。
JVMがWindows、Linux、SolarisといったOS間の差異を直接吸収することで一つのJavaバイトコードで多くの実行環境で動作させることが出来、環境ごとにプログラムを書き直す手間が無い。
Windowsで例えれば〜.cファイルが〜.javaファイルに相当し、〜.classが〜.exeファイルに相当すると考えると分かりやすいか?(正確ではないけど)



コンパイル方法

extensionsフォルダにbuild.cmdがある場合にはbuild.cmd上に.javaファイルをドラッグ・アンド・ドロップするだけでよい。上手くコンパイルされれば同名の.classファイルが生成される。
build.cmdが無い場合にはダウンロードするか、このページの後半にあるソースコードをコピペして自分で作成するか、コマンドプロンプト/bash等を開いて以下のコマンドを入力する。

Windows

cd (NicoCache_nlのフォルダ)
javac -classpath ./;./NicoCache_nl.jar extensions/Extension1.java 
 

例:

cd /d D:\NicoCache_nl && ^
javac -classpath ./;./NicoCache_nl.jar extensions/nlMovieFetcher.java
 
この例↑ではコマンドを連結(&&)して改行も連結(^)しているのでそのまま全文をコマンドプロンプトにコピペして実行!
あるいはextensionsフォルダにbuild.cmdがある場合は次のコマンドでコンパイルできる拡張もある
cd (NicoCache_nlのextensionsフォルダ)
.\build Extension1.java 
 

例:

cd /d D:\NicoCache_nl\extensions && build nlMovieFetcher.java
 

Un*x

cd (NicoCache_nlのディレクトリ)
javac -classpath ./:./NicoCache_nl.jar -encoding sjis \
extensions/Extension1.java 
 

例:

cd /home/username/nicocache_nl && \
javac -classpath ./:./NicoCache_nl.jar -encoding sjis && \
extensions/nlMovieFetcher.java
 
この例↑でも同様にコマンドを連結(&&)して改行も連結(\)しているのでそのまま全文をbashシェル等にコピペして実行!
(Linux)コマンドを連結して行う「;」「&」「&&」「||」の違い
https://jehupc.exblog.jp/15729095/
ホームディレクトリはcdからpwdで確認できる

build.cmdのソースコード

@echo off
setlocal
if "%~1"=="" goto USAGE
"%JAVA_HOME%\bin\javac" -Xlint -Xlint:-path -classpath ..;..\NicoCache_nl.jar %*
goto :EOF
:USAGE
echo Usage: build Extension1.java [Extension2.java ...]

拡張機能コンパイルの自動化ツール
任意のタイミングでファイルをダブルクリックするだけ

ExtensionsAutoBuild.batのソースコード

@echo off
"%JAVA_HOME%\bin\javac" -Xlint -Xlint:-path -classpath ..;%~dp0\NicoCache_nl.jar %~dp0\extensions\*.java
Echo 「警告」は無視して問題ありません。気になるようであれば掲示板に報告してください
Echo 「エラー」はコンパイル失敗です。解決してください
pause


成功例

このように、classファイルが作成される。(或いはclassファイルの更新日時が新しくなる。)

失敗例

エラーが出て、classファイルは作成されない。(若しくはclassファイルの更新日時は変わらない。)

失敗したときは

javacというコマンドが見つからないと出る

→環境変数の設定が間違い。インストールを参考に再設定。
名前:
コメント: