关于Java文件的Dos2unix
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Java文件的Dos2unix相关的知识,希望对你有一定的参考价值。
如果dos2unix命令在Java源文件上运行,在编译之前是否会产生任何影响或影响? Java文件将从Linux中的CVS存储库下载,然后由Ant脚本编译为jar。谢谢。
答案
甚至不需要测试它(理论上):在Java语言中,换行符没有语义含义。因此,存在是无关紧要的(对于编译器而言)。
因此,一个人类的读者头脑发现,看看没有新行的源代码,或者在任何合法的地方换行,对于编译器来说非常不愉快,因为它说:没关系。
因此,像dos2unix这样的工具不应该对可能产生“语义”差异的源代码进行任何更改。
当然:真正的答案是:不要把时间花在担心断线上。将它投入到从1999年到2018年移动你的整个系统(通过用git代替CVS,用例如maven / gradle代替Ant)。
另一答案
不,它所做的就是处理行结尾。
另一答案
Practical test
首先,我创建了一个名为Main.java
的Linux行结尾的测试文件,这在Linux编译时不出所料。
0x63 [ c] 0x6c [ l] 0x61 [ a] 0x73 [ s] 0x73 [ s]
0x20 [ ] 0x4d [ M] 0x61 [ a] 0x69 [ i] 0x6e [ n]
0x20 [ ] 0x7b [ {] 0x0a [
] 0x7d [ }] 0x0a [
]
0x0a [
]
转换为DOS结尾给出了这样的结论:
0x63 [ c] 0x6c [ l] 0x61 [ a] 0x73 [ s] 0x73 [ s]
0x20 [ ] 0x4d [ M] 0x61 [ a] 0x69 [ i] 0x6e [ n]
0x20 [ ] 0x7b [ {] 0x0d [
] 0x0a [
] 0x7d [ }]
0x0d [
] 0x0a [
] 0x0d [
] 0x0a [
]
哪个仍然编译,然后转换回来:
0x63 [ c] 0x6c [ l] 0x61 [ a] 0x73 [ s] 0x73 [ s]
0x20 [ ] 0x4d [ M] 0x61 [ a] 0x69 [ i] 0x6e [ n]
0x20 [ ] 0x7b [ {] 0x0a [
] 0x7d [ }] 0x0a [
]
0x0a [
]
这和以前一样
Line endings
Windows(dos)和Linux / Mac(unix)行结尾之间的区别在于,以unix结尾的行是
,而以dos结尾的行是
。
Results
- 由于unix2dos / dos2unix仅更改行结尾,因此不会更改内容
- 至少在Linux上,javac可以使用任一行成功结束编译源文件。
以上是关于关于Java文件的Dos2unix的主要内容,如果未能解决你的问题,请参考以下文章