关于JavaJAR文件中清单的问题

关于JavaJAR文件中清单的问题,java,jar,manifest,Java,Jar,Manifest,java jar文件中的清单文件中必须有类路径吗?我们能在没有类路径的情况下工作吗 我之所以问这个问题,是因为我有一个服务器应用程序的jar文件。当我尝试连接许多与服务器的连接时,服务器宕机,错误是“打开的文件太多”,当搜索它时,我发现了一个Sun Bug。然后我检查了一下,在Jar文件中有一个类路径条目。所以这个问题就出现了 编辑:我的Filr read代码为: // Creating a new File instance File file= new File(fileName);

java jar文件中的清单文件中必须有类路径吗?我们能在没有类路径的情况下工作吗

我之所以问这个问题,是因为我有一个服务器应用程序的jar文件。当我尝试连接许多与服务器的连接时,服务器宕机,错误是“打开的文件太多”,当搜索它时,我发现了一个Sun Bug。然后我检查了一下,在Jar文件中有一个类路径条目。所以这个问题就出现了

编辑:我的Filr read代码为:

// Creating a new File instance
   File file= new File(fileName);  

   // Creates a DataInputStream that uses the specified underlying InputStream.
   DataInputStream input = new DataInputStream(new FileInputStream(file));
   Data = new byte[(int)file.length()];

   // Reads  bytes from the  input stream and stores them into the buffer array Data.
   input.read(Data);

   // Closes this input stream and releases any system resources associated with the stream. 
   input.close();

它是否有任何问题导致笔文件过多?

Jar清单文件中的
类路径
项是完全可选的,许多工作Jar文件不使用该字段。

Jar清单文件中的
类路径
项是完全可选的,许多工作Jar文件不使用该字段。

可执行Jar必须通过清单文件的类路径头引用它所需的所有其他依赖Jar。如果使用-jar选项,JVM将忽略环境变量CLASSPATH和命令行上指定的任何类路径。除此之外,到bug数据库的链接表明它是一个关闭的bug。

可执行JAR必须通过清单文件的类路径头引用它所需的所有其他依赖JAR。如果使用-jar选项,JVM将忽略环境变量CLASSPATH和命令行上指定的任何类路径。除此之外,您指向bug数据库的链接表明它是一个已关闭的bug。

该条目是完全可选的,但您所指的bug与编译有关,而不是运行时,因此这很可能不是问题所在

应用程序服务器通常非常需要文件,如果没有采取任何措施来增加打开文件的限制,默认值可能不够高

例如,在CentOS上,我们发现即使在QA(不是负载测试,只是功能测试)中,服务器也可以使用JBoss4.2最大限度地使用ulimit

编辑:您发布的代码在保持文件打开方面唯一的错误是您应该使用它来关闭流。在服务器应用程序中,可能是该代码经常引发异常,导致文件无法关闭(因为您没有在finally中关闭它们),随着时间的推移,这些打开的文件句柄会累积起来。在如何操作中还存在其他问题(例如依赖
available()
来确定字节数组的大小),但这不会影响您的问题


另一种可能是,在*nix系统下,套接字与文件消耗相同的资源,因此可能是由于打开的套接字太多(超出系统配置允许的范围),导致此代码无法执行。

该条目是完全可选的,但您所指的错误与编译有关,而不是与运行时有关,因此,这不太可能是问题所在

应用程序服务器通常非常需要文件,如果没有采取任何措施来增加打开文件的限制,默认值可能不够高

例如,在CentOS上,我们发现即使在QA(不是负载测试,只是功能测试)中,服务器也可以使用JBoss4.2最大限度地使用ulimit

编辑:您发布的代码在保持文件打开方面唯一的错误是您应该使用它来关闭流。在服务器应用程序中,可能是该代码经常引发异常,导致文件无法关闭(因为您没有在finally中关闭它们),随着时间的推移,这些打开的文件句柄会累积起来。在如何操作中还存在其他问题(例如依赖
available()
来确定字节数组的大小),但这不会影响您的问题


另一种可能是,在*nix系统下,套接字与文件消耗相同的资源,因此可能是由于打开的套接字太多(超出系统配置允许的范围),导致此代码无法执行。

请确保在读取文件后关闭该文件


如果在循环中将文件内容读入字节数组,是否在读取下一个文件之前关闭该文件?

请确保在读取后关闭该文件


如果在循环中将文件内容读取到字节数组中,是否在读取下一个文件之前关闭该文件?

此错误已在4年前修复。你的问题出在别的地方了。你试过了吗?如果您的jar文件依赖于其他jar文件,那么您只需要类路径。嗨,Baluc,我正在从一个文件的某个位置读取字节,这是唯一的文件读取操作。我有一个ReadBytes函数,它接受文件名,然后以字节形式返回内容。那么我可以把这看作是唯一的罪魁祸首,但无法找到错误的确切原因。有什么建议吗?这个错误已经在4年前修复了。你的问题出在别的地方了。你试过了吗?如果您的jar文件依赖于其他jar文件,那么您只需要类路径。嗨,Baluc,我正在从一个文件的某个位置读取字节,这是唯一的文件读取操作。我有一个ReadBytes函数,它接受文件名,然后以字节形式返回内容。那么我可以把这看作是唯一的罪魁祸首,但无法找到错误的确切原因。有什么建议吗?我正在文件读取中执行此操作://创建新文件实例File FileToBeRead=new File(fileName);//创建使用指定基础InputStream的DataInputStream。DataInputStream输入=新的DataInputStream(新的FileInputStream(FileToBeRead));数据=新字节[(int)FileToBeRead.length()];//从输入流读取字节并将其存储到缓冲区数组数据中。输入、读取(数据);//关闭此输入流并释放与该流关联的所有系统资源。input.close();我在文件Read://创建一个新文件实例File FileToBeRead=new File(f