无法将符号链接命名为java文件名称以外的java文件

时间:2016-12-31 12:39:36

标签: java bash symlink

看看下面的图片:

我创建了一个指向java .class文件的符号链接。它可以工作,我可以通过符号链接将原始文件传递给Java解释器,并且它可以正常运行程序。但是,如果我将原始文件名以外的任何其他名称命名,则不起作用。

我不得不把它命名为原始文件名。

我不确定是否应该将其发布到Unix / Linux堆栈。

1 个答案:

答案 0 :(得分:1)

这是一项要求,因为这是Java 找到类文件的方式。

当您说java App时,App不是文件名,而是完全限定的类名。

Java有一些规则如何从类名到文件名。这是在默认的类加载器中实现的。当类存储在.class文件(而不是.jar文件)中时,它会自动将.class扩展名附加到类名。 在此之前,它将包分隔符(在Java源代码中看起来像一个点)转换为操作系统的路径分隔符(在Linux上,/(斜杠),在Windows上{{1 (反斜杠)。

如果为类文件指定一个不同的名称,无论是使用真正的重命名还是使用符号链接,Java都无法找到它,因为它不遵循关于如何从中获取的Java规则类名到文件名。