Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';t名称指向java文件的符号链接,而不是java文件的名称_Java_Bash_Symlink - Fatal编程技术网

Can';t名称指向java文件的符号链接,而不是java文件的名称

Can';t名称指向java文件的符号链接,而不是java文件的名称,java,bash,symlink,Java,Bash,Symlink,请看下图: 我创建了一个指向java.class文件的符号链接。它可以工作,我可以通过符号链接将原始文件传递给Java解释器,它可以正常运行程序。但如果我将链接命名为原始文件名以外的任何文件名,它就不起作用 我不得不把它命名为原始文件名,这让我很沮丧 我不确定是否应该将此发布到Unix/Linux堆栈。这是一个要求,因为Java就是这样查找类文件的 当你说javaapp时,App不是一个文件名,而是一个完全限定的类名 Java有一些从类名到文件名的规则。这是在默认类装入器中实现的。当类存储在.c

请看下图:

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

我不得不把它命名为原始文件名,这让我很沮丧


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

这是一个要求,因为Java就是这样查找类文件的

当你说
javaapp
时,
App
不是一个文件名,而是一个完全限定的类名

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


如果给类文件起一个不同的名字,不管是用真正的重命名还是符号链接,Java都找不到它,因为它不遵循Java关于如何从类名到文件名的规则。

在Java中,包含类的文件必须与类同名。但您可以创建一个可运行的Jar from您的类(文件)java类必须以.class结尾,其名称将用于获取类的名称。文件和类都被命名为App。实际上,类是App,文件是App.java和App.classwell。我从来没有重命名过java文件,只有symlink如果你想使用java,你必须遵守平台的命名规则。我觉得没什么好说的