【发布时间】:2013-01-15 04:30:25
【问题描述】:
我有一个 maven 项目,它通过执行 javah 作为 java 库的正常构建过程的一部分来生成 .h JNI 文件。然后将这些 .h 文件签入到源代码控制(例如 git)并用于构建随附的本机库。
一个小烦恼是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" 属性。但是,我找不到那会是什么课程,也不知道在哪里。
【问题讨论】:
-
或者版本控制应该更好地处理这个? help.github.com/articles/dealing-with-line-endings
-
我宁愿不依赖版本控制系统来处理这里的行尾。我正在寻找一种适用于任何类型的版本控制系统的解决方案,即修复
javah行为的解决方案。 -
我明白了。你如何处理其他类型的文件?他们也有类似的问题?
-
其他文件没问题,因为大多数编辑器都知道在编辑文件时要保留行尾。但是这些文件是自动生成的,
javah不关心保留行尾。
标签: java java-native-interface newline javah