如果dos2unix命令在编译之前运行在Java源文件上,是否会产生任何影响或影响?Java文件将从Linux中的CVS存储库下载,然后由Ant脚本编译到jar中。谢谢。
发布于 2018-03-06 18:09:15
甚至不需要对此进行测试(理论上):在Java语言中,行不显示任何语义意义。因此,存在与编译器无关(也就是说)。
因此,人类的读者会发现,如果看到源代码中有零换行符,或者在任何合法的地方都有换行符,这是非常令人不快的--对于编译器来说,这并不重要。
因此,像dos2unix这样的工具不应该对源代码进行任何可能产生“语义”差异的更改。
当然,真正的答案是:不要把你的时间花在担心线路中断上。从1999年到2018年,投资整个系统(比如用git替换CVS,用maven/gradle替换Ant )。
发布于 2018-03-06 17:45:16
不是的。它所做的只是处理行尾。
发布于 2018-03-06 17:50:08
实际试验
首先,我创建了一个名为Main.java的Linux行尾测试文件,这并不奇怪。
0x63 [ c] 0x6c [ l] 0x61 [ a] 0x73 [ s] 0x73 [ s]
0x20 [ ] 0x4d [ M] 0x61 [ a] 0x69 [ i] 0x6e [ n]
0x20 [ ] 0x7b [ {] 0x0a [\n] 0x7d [ }] 0x0a [\n]
0x0a [\n]转换到监督事务司的结尾给出了以下结论:
0x63 [ c] 0x6c [ l] 0x61 [ a] 0x73 [ s] 0x73 [ s]
0x20 [ ] 0x4d [ M] 0x61 [ a] 0x69 [ i] 0x6e [ n]
0x20 [ ] 0x7b [ {] 0x0d [\r] 0x0a [\n] 0x7d [ }]
0x0d [\r] 0x0a [\n] 0x0d [\r] 0x0a [\n]它仍然编译,并转换回:
0x63 [ c] 0x6c [ l] 0x61 [ a] 0x73 [ s] 0x73 [ s]
0x20 [ ] 0x4d [ M] 0x61 [ a] 0x69 [ i] 0x6e [ n]
0x20 [ ] 0x7b [ {] 0x0a [\n] 0x7d [ }] 0x0a [\n]
0x0a [\n]和以前一样
线尾
Windows ( dos )和Linux / Mac ( unix )行尾的区别是,在unix上结束的行是\n,而以dos结尾的行是\r\n。
结果
https://stackoverflow.com/questions/49136817
复制相似问题