javah
Java ライブラリの通常のビルド プロセスの一部として実行することにより、.h JNI ファイルを生成する Maven プロジェクトがあります。これらの .h ファイルはソース管理 (git など) にチェックインされ、付随するネイティブ ライブラリのビルドに使用されます。
マイナーな問題の 1 つは、javah
実行されているプラットフォームによって生成されるファイルの行末が異なることです。そのため、Mac OSX 開発者がビルドを実行して (UNIX スタイルの行末で) チェックインすると、Windows 開発者はその後、ビルドによってすべての .h ファイルが (Windows スタイルの行末に) 変更されたことがわかります。しかし、それらは実際には変更されていませんjavah
。プラットフォームに依存した方法で動作しているだけです。
javah
たとえば、.h ファイルを生成するときに UNIX スタイルの行末を常に使用するようにするにはどうすればよいですか? 適切なコマンド ライン スイッチがないようです。
> javah.exe
Usage:
javah [options] <classes>
where [options] include:
-o <file> Output file (only one of -d or -o may be used)
-d <dir> Output directory
-v -verbose Enable verbose output
-h --help -? Print this message
-version Print version information
-jni Generate JNI-style header file (default)
-force Always write output files
-classpath <path> Path from which to load classes
-bootclasspath <path> Path from which to load bootstrap classes
<classes> are specified with their fully qualified names
(for example, java.lang.Object).
おそらく、実行前にプロパティjavah
を明示的に設定することを除いて、実行可能ファイルの起動と同じクラスを手動で起動することが可能です。"line.separator"
しかし、それがどのクラスになるのか、どこにあるのかはわかりませんでした。