无法将符号 link 命名为 java 文件而不是 java 文件的名称
Can't name symbolic link to java file other than name of the java file
看下图:
我制作了一个符号 link 到 java .class 文件。它有效,我可以通过符号 link 将原始文件传递给 Java 解释器,它可以正常运行程序。但是,如果我将 link 命名为原始文件名以外的任何其他名称,它将不起作用。
令我沮丧的是,我必须将其命名为原始文件名。
不确定我是否应该将此发布到 Unix/Linux 堆栈。
这是一项要求,因为这就是 Java 查找 class 文件的方式。
当您说 java App
时,App
不是文件名,而是完全限定的 class 名称。
Java 有一些规则如何从 class 名称到文件名。这是在默认 class 加载程序中实现的。当 class 存储在 .class 文件(而不是 .jar 文件)中时,它会自动将 .class
扩展名附加到 class 名称。
在此之前,它将包分隔符(在 Java 源代码中看起来像一个点)转换为操作系统的路径分隔符(在 Linux 上,一个 /
(斜线) , 在 Windows 上 \
(反斜杠)。
如果您给 class 文件一个不同的名称,无论您是使用真正的重命名还是使用符号链接,Java 都无法找到它,因为它不遵循关于如何从 class 名称到文件名的 Java 规则。
看下图:
我制作了一个符号 link 到 java .class 文件。它有效,我可以通过符号 link 将原始文件传递给 Java 解释器,它可以正常运行程序。但是,如果我将 link 命名为原始文件名以外的任何其他名称,它将不起作用。
令我沮丧的是,我必须将其命名为原始文件名。
不确定我是否应该将此发布到 Unix/Linux 堆栈。
这是一项要求,因为这就是 Java 查找 class 文件的方式。
当您说 java App
时,App
不是文件名,而是完全限定的 class 名称。
Java 有一些规则如何从 class 名称到文件名。这是在默认 class 加载程序中实现的。当 class 存储在 .class 文件(而不是 .jar 文件)中时,它会自动将 .class
扩展名附加到 class 名称。
在此之前,它将包分隔符(在 Java 源代码中看起来像一个点)转换为操作系统的路径分隔符(在 Linux 上,一个 /
(斜线) , 在 Windows 上 \
(反斜杠)。
如果您给 class 文件一个不同的名称,无论您是使用真正的重命名还是使用符号链接,Java 都无法找到它,因为它不遵循关于如何从 class 名称到文件名的 Java 规则。