如果我在Windows中有TestClass.java
,那么它的短名称将是TESTCL~1.JAV
(如果在Windows计算机上启用了8.3表示法,则所有文件都有两个名称 - 它&#39 ; s真实姓名和一个与旧版Windows兼容的短名称。短名称最多包含8个字母和3个字母扩展名。)
Java意识到这一点。或者至少似乎是。在安装java之后,注册表中出现了.jav
扩展名描述:
HKEY_CLASSES_ROOT\.jav
使用与.java
文件相同的持久处理程序:
{5e941d80-bf96-11cd-b579-08002b30bfeb}
(它是纯文本的处理程序)
当我尝试使用其短名称传递给javac
一个java文件时,我收到以下错误:
javac: invalid flag: TESTCL~1.JAV
Usage: javac <options> <source files>
use -help for a list of possible options
即。根本找不到文件。
是否可以使用.jav
扩展名或使用java文件短名称编译文件?
或者,已安装的扩展程序描述是一个很久以前被遗忘且不再工作的向后兼容性文件?
答案 0 :(得分:1)
持久性处理程序{5e941d80-bf96-11cd-b579-08002b30bfeb}
只是“纯文本持久性处理程序”,与Java无关。当我搜索我的机器时,我发现这个处理程序也安装了.asc
,.asm
,.bas
,.js
以及许多其他我尚未安装的特定开发工具。很明显,有很多预先安装的文件类型标记为“可以像纯文本一样处理”,搜索引擎可能会使用这些文件类型。所以我假设.jav
的注册表项实际上并不是由JDK创建的,但为了最终证明这一点,我需要一台没有安装JDK的计算机。