未检测到 .xls 文件 java
.xls file not detected java
当我尝试加载 xls 文件时,它不起作用,即使它位于同一文件夹中。我也用绝对路径试过。
(这一切都是因为缺少罐子而发生的,这里是所有罐子的列表。为了解决相对路径的问题,下面的 url.getResource() 工作正常。)
My Jar List(Image)
public class Main {
public static void main(String[] args) throws FileNotFoundException, IOException {
FileInputStream f = new FileInputStream("MP.xls");
HSSFWorkbook l = new HSSFWorkbook(f);
}
}
public class Main {
public static void main(String[] args) throws FileNotFoundException, IOException {
FileInputStream f = new FileInputStream("C:\Users\alumno.Alumno-PC\Documents\NetBeansProjects\pruebas xlsx\src\pruebasxlsx\MP.xls");
HSSFWorkbook l = new HSSFWorkbook(f);
}
}
This is where the file is located(picture)
这是相对路径的错误:
Exception in thread "main" java.io.FileNotFoundException: MP.xls (El sistema no puede encontrar el archivo especificado)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
at pruebasxlsx.Main.main(Main.java:22)
这是绝对路径的错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/math3/util/ArithmeticUtils
at org.apache.poi.poifs.property.RootProperty.setSize(RootProperty.java:59)
at org.apache.poi.poifs.property.DirectoryProperty.<init>(DirectoryProperty.java:52)
at org.apache.poi.poifs.property.RootProperty.<init>(RootProperty.java:31)
at org.apache.poi.poifs.property.PropertyTable.<init>(PropertyTable.java:58)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:99)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:272)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:399)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:381)
at pruebasxlsx.Main.main(Main.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.util.ArithmeticUtils
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 9 more
文件输入流获取以文件系统中的路径名命名的文件——这意味着一个绝对路径,作为参数,而不是相对路径。
如果您想从 class 的位置加载文件,请使用:
URL url = class.getResource("file.txt");
然后使用以下命令获取它的绝对路径:
url.getPath();
所以,下面的解决方案应该可行(它可以完善,但你会得到一个想法):
public class Main {
static URL url = Main.class.getResource("MP.xls");
public static void main(String[] args) throws FileNotFoundException, IOException {
FileInputStream f = new FileInputStream(url.getPath());
HSSFWorkbook l = new HSSFWorkbook(f);
}
}
具有绝对路径的 FileInputStream 有效。只是用 HSSFWorkbook 阅读 - 错过了一个图书馆。
相对路径是一个易变的选项。如果文件是只读源,将其与应用程序捆绑在一起,并且不要使用 File(文件系统文件),而是使用资源,class 路径上的“文件”,可能捆绑在一个应用程序 jar.
InputStream f = Main.class.getResourceAsStream("/pruebasxslx/MP.xls");
HSSFWorkbook l = new HSSFWorkbook(f);
对于 HSSFWorkbook,未找到具有 org.apache.commons.math3
classes 的库,
一个间接需要的库。
由于这些库依赖项是额外的工作,已经由其他人完成,并且涉及移动所有库的连贯版本以协同工作,因此最好使用例如 maven,一个构建基础设施。大多数 IDE 都支持 Maven(或 gradle)项目,并且目录结构略有不同。
当我尝试加载 xls 文件时,它不起作用,即使它位于同一文件夹中。我也用绝对路径试过。 (这一切都是因为缺少罐子而发生的,这里是所有罐子的列表。为了解决相对路径的问题,下面的 url.getResource() 工作正常。) My Jar List(Image)
public class Main {
public static void main(String[] args) throws FileNotFoundException, IOException {
FileInputStream f = new FileInputStream("MP.xls");
HSSFWorkbook l = new HSSFWorkbook(f);
}
}
public class Main {
public static void main(String[] args) throws FileNotFoundException, IOException {
FileInputStream f = new FileInputStream("C:\Users\alumno.Alumno-PC\Documents\NetBeansProjects\pruebas xlsx\src\pruebasxlsx\MP.xls");
HSSFWorkbook l = new HSSFWorkbook(f);
}
}
This is where the file is located(picture)
这是相对路径的错误:
Exception in thread "main" java.io.FileNotFoundException: MP.xls (El sistema no puede encontrar el archivo especificado)
at java.base/java.io.FileInputStream.open0(Native Method)
at java.base/java.io.FileInputStream.open(FileInputStream.java:216)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:157)
at java.base/java.io.FileInputStream.<init>(FileInputStream.java:111)
at pruebasxlsx.Main.main(Main.java:22)
这是绝对路径的错误
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/math3/util/ArithmeticUtils
at org.apache.poi.poifs.property.RootProperty.setSize(RootProperty.java:59)
at org.apache.poi.poifs.property.DirectoryProperty.<init>(DirectoryProperty.java:52)
at org.apache.poi.poifs.property.RootProperty.<init>(RootProperty.java:31)
at org.apache.poi.poifs.property.PropertyTable.<init>(PropertyTable.java:58)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:99)
at org.apache.poi.poifs.filesystem.POIFSFileSystem.<init>(POIFSFileSystem.java:272)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:399)
at org.apache.poi.hssf.usermodel.HSSFWorkbook.<init>(HSSFWorkbook.java:381)
at pruebasxlsx.Main.main(Main.java:24)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.math3.util.ArithmeticUtils
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 9 more
文件输入流获取以文件系统中的路径名命名的文件——这意味着一个绝对路径,作为参数,而不是相对路径。
如果您想从 class 的位置加载文件,请使用:
URL url = class.getResource("file.txt");
然后使用以下命令获取它的绝对路径:
url.getPath();
所以,下面的解决方案应该可行(它可以完善,但你会得到一个想法):
public class Main {
static URL url = Main.class.getResource("MP.xls");
public static void main(String[] args) throws FileNotFoundException, IOException {
FileInputStream f = new FileInputStream(url.getPath());
HSSFWorkbook l = new HSSFWorkbook(f);
}
}
具有绝对路径的 FileInputStream 有效。只是用 HSSFWorkbook 阅读 - 错过了一个图书馆。
相对路径是一个易变的选项。如果文件是只读源,将其与应用程序捆绑在一起,并且不要使用 File(文件系统文件),而是使用资源,class 路径上的“文件”,可能捆绑在一个应用程序 jar.
InputStream f = Main.class.getResourceAsStream("/pruebasxslx/MP.xls");
HSSFWorkbook l = new HSSFWorkbook(f);
对于 HSSFWorkbook,未找到具有 org.apache.commons.math3
classes 的库,
一个间接需要的库。
由于这些库依赖项是额外的工作,已经由其他人完成,并且涉及移动所有库的连贯版本以协同工作,因此最好使用例如 maven,一个构建基础设施。大多数 IDE 都支持 Maven(或 gradle)项目,并且目录结构略有不同。