IntelliJ IDEA Community版独特的一个bug:某些目录下的文件能显示但不被编译
2016-05-16 00:00
447 查看
摘要: IntelliJ IDEA Ultimate不存在的问题。没办法只好自己动手折腾了。
版本是2016.1.1 和 2016.1.2。Windows上和Mac上都一样的现象。
问题的详细都提交给JetBrain公司了,但是还没有修复:
https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FIDEA-155471
问题的起源是,有个工程里有个目录叫做rcs,好死不死的正好和古老的CVS版本管理系统所使用的隐藏信息文件后缀同名,默认就不被显示在工程里,看都看不到。这个在Ultimate版里也存在。
这个不是什么大问题,到设定里到File Types设定里,找到"Ignore files and folders"设定,从中把rcs字眼给删除。这就可以显示了,
但是之后,Ultimate版可以正常编译rcs目录下的java文件,Community版不行。
于是想出了一个怪招,见一个rrr符号连接,指向rcs目录,然后在IDEA里把rrr加到"Ignore files and folders"设定里以便隐藏。这的确可以编译了,但是,每次改变一点东西都要手动到菜单里之行“编译 ...当前文件”命令或者全体重新编译,不然代码就执行老的。
于是研究起来,发现是lib/jps-model.jar里又个org/jetbrains/jps/model/impl/JpsFileTypesConfigurationImpl.class 里的固定字符串里改掉就行了。
于是用二进制编辑器替换掉rcs -> rrr,在用jar或者7zip什么的替换掉jps-model.jar里的class为改好的class文件就好了。
这就可以结束了。
具体的研究过程就是把IDEA里所有的jar都展开,用gstrings工具找字符串再grep,最后确定了三个文件可疑,挨个试一下就成了。
cd "/Applications/IntelliJ IDEA CE.app/Contents"
find . -name '*.jar' | while read f; do rm -fr ~/tmp/IntelliJ_IDEA_Community/$f; mkdir -p ~/tmp/IntelliJ_IDEA_Community/$(dirname $f); unzip $f -d ~/tmp/IntelliJ_IDEA_Community/$f > /dev/null; done
cd /Users/q/tmp/IntelliJ_IDEA_Community/
find . -name '*.class' -or -name '*.xml' -or -name '*.json' -or -name '*.properties' | while read f; do gstrings -n 3 $f | grep -w rcs && echo ---- $f ----;done
NG:
".dependency-info;CVS;RCS;SCCS;rcs;
---- ./lib/idea.jar/com/intellij/openapi/fileTypes/impl/FileTypeConfigurable$FileTypePanel.class ----
NG:
u*.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;RCS;SCCS;__pycache__;_svn;rcs;vssver.scc;vssver2.scc;
---- ./lib/idea.jar/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.class ----
OK:
CVS;SCCS;RCS;rcs;.DS_Store;.svn;.pyc;.pyo;*.pyc;*.pyo;.git;*.hprof;_svn;.hg;*.lib;*~;__pycache__;.bundle;vssver.scc;vssver2.scc;*.rbc;
---- ./lib/jps-model.jar/org/jetbrains/jps/model/impl/JpsFileTypesConfigurationImpl.class ----
NG:
<ignoreFiles list="CVS;SCCS;RCS;rcs;.DS_Store;.svn;.pyc;.pyo"/>
---- ./lib/resources.jar/CommunityFileTypes.xml ----
版本是2016.1.1 和 2016.1.2。Windows上和Mac上都一样的现象。
问题的详细都提交给JetBrain公司了,但是还没有修复:
https://youtrack.jetbrains.com/oauth?state=%2Fissue%2FIDEA-155471
问题的起源是,有个工程里有个目录叫做rcs,好死不死的正好和古老的CVS版本管理系统所使用的隐藏信息文件后缀同名,默认就不被显示在工程里,看都看不到。这个在Ultimate版里也存在。
这个不是什么大问题,到设定里到File Types设定里,找到"Ignore files and folders"设定,从中把rcs字眼给删除。这就可以显示了,
但是之后,Ultimate版可以正常编译rcs目录下的java文件,Community版不行。
于是想出了一个怪招,见一个rrr符号连接,指向rcs目录,然后在IDEA里把rrr加到"Ignore files and folders"设定里以便隐藏。这的确可以编译了,但是,每次改变一点东西都要手动到菜单里之行“编译 ...当前文件”命令或者全体重新编译,不然代码就执行老的。
于是研究起来,发现是lib/jps-model.jar里又个org/jetbrains/jps/model/impl/JpsFileTypesConfigurationImpl.class 里的固定字符串里改掉就行了。
于是用二进制编辑器替换掉rcs -> rrr,在用jar或者7zip什么的替换掉jps-model.jar里的class为改好的class文件就好了。
这就可以结束了。
具体的研究过程就是把IDEA里所有的jar都展开,用gstrings工具找字符串再grep,最后确定了三个文件可疑,挨个试一下就成了。
cd "/Applications/IntelliJ IDEA CE.app/Contents"
find . -name '*.jar' | while read f; do rm -fr ~/tmp/IntelliJ_IDEA_Community/$f; mkdir -p ~/tmp/IntelliJ_IDEA_Community/$(dirname $f); unzip $f -d ~/tmp/IntelliJ_IDEA_Community/$f > /dev/null; done
cd /Users/q/tmp/IntelliJ_IDEA_Community/
find . -name '*.class' -or -name '*.xml' -or -name '*.json' -or -name '*.properties' | while read f; do gstrings -n 3 $f | grep -w rcs && echo ---- $f ----;done
NG:
".dependency-info;CVS;RCS;SCCS;rcs;
---- ./lib/idea.jar/com/intellij/openapi/fileTypes/impl/FileTypeConfigurable$FileTypePanel.class ----
NG:
u*.hprof;*.pyc;*.pyo;*.rbc;*.yarb;*~;.DS_Store;.git;.hg;.svn;CVS;RCS;SCCS;__pycache__;_svn;rcs;vssver.scc;vssver2.scc;
---- ./lib/idea.jar/com/intellij/openapi/fileTypes/impl/FileTypeManagerImpl.class ----
OK:
CVS;SCCS;RCS;rcs;.DS_Store;.svn;.pyc;.pyo;*.pyc;*.pyo;.git;*.hprof;_svn;.hg;*.lib;*~;__pycache__;.bundle;vssver.scc;vssver2.scc;*.rbc;
---- ./lib/jps-model.jar/org/jetbrains/jps/model/impl/JpsFileTypesConfigurationImpl.class ----
NG:
<ignoreFiles list="CVS;SCCS;RCS;rcs;.DS_Store;.svn;.pyc;.pyo"/>
---- ./lib/resources.jar/CommunityFileTypes.xml ----
相关文章推荐
- SourceProvider.getJniDirectories
- Trac 中文语言安装
- 软件 bug 的生命周期
- Firefox2中输入框丢失光标bug的解决方法
- for命令的一些bug分析
- 修正IE下使用CSS属性overflow的bug
- 解决IE6 3像素Bug的css写法
- 跟我学习JScript的Bug与内存管理
- JS注释所产生的bug 即使注释也会执行
- IE本地存储userdata的一个bug说明
- IE在DOM操作有表单控件时的bug
- ie 处理 gif动画 的onload 事件的一个 bug
- IIS6 安全性存在超级BUG,快来看
- Android生存指南之:解Bug策略与思路问题的详解
- shell脚本中case条件控制语句的一个bug分析
- 关于在IE下的一个安全BUG --可用于跟踪用户的系统鼠标位置
- jQuery ajax BUG:object doesn't support this property or method
- ShareSDK造成App崩溃的一个BUG原因分析以及Fix方法
- 关于c语言的一个小bug详解
- JavaScript编程中容易出BUG的几点小知识