当前位置: 首页 > 知识库问答 >
问题:

尝试读取jar中的文件时出错

籍弘伟
2023-03-14

我试图读取xsd文件以验证模式。

我的架构位于位置 x/y/z/test.xsd

我的类读取这个文件也在< code > x/y/z/read schema . Java 中

它们都装在我的罐子里。

我试图在ReadSchema.java中读取这个文件,如下所示,其中名称是test.xsd但url返回为null?

我做错什么了吗?

  private static URL getURLForName(String name) 
  {
      ClassLoader cl = Thread.currentThread().getContextClassLoader();

      URL url = cl.getResource(name);
      return url;
  }

共有2个答案

穆彬郁
2023-03-14

没有错,但 test.xsd 必须在您的 claspath 中。如果它在Eclipse中工作,而不是在jar中工作,这意味着你的MANIFEST。MF 不正确。尝试在清单中添加以下行,然后再次创建 jar:

Manifest-Version: 1.0
Class-Path: . 

这是我的程序之一的代码:

URL config = SnapshotMigrationMain.class.getResource("/config_migration/log4jconfig.properties");

当然,您必须将文件导出到jar中或相对于jar的子目录中。
以我的示例:
migration.jar
/config_migration/log4jConfig.properties

朱锦
2023-03-14

您使用的名称是错误的。请记住:

getClass().getResource();

采用相对于类的名称,而

getClass().getClassLoader().getResource();

采用绝对路径。

编辑:为什么我称之为绝对路径

因此,如果您的文件在yourjar.jar中!你的班级是x.y.Klass

然后你可以去:

getClass().getResource("z.txt");

或者你可以这样做:

getClass().getClassLoader().getResource("/x/y/z.txt");
 类似资料:
  • 问题内容: 我刚刚开始学习Java,并且只知道少量的代码,但是,这仍然是一个简单的程序。它更多是一个恶作剧程序,但主要只是为了测试我是否可以创建一个jar文件。 这是代码: 我将其保存到名为的文件中,然后使用进行编译 这有效,当我使用运行它时 它也可以正常工作。 因此,然后我尝试创建一个jar文件。我使用命令 而且有效。之后,我双击jar文件,它出现一个错误。 所以我在cmd中运行它 并得到这个错

  • 问题内容: 我无法使用Java从HDFS读取文件: 我没有设置我们的HDFS,所以我不知道我不知道的东西。任何帮助表示赞赏。 问题答案: 试试这个: 请参考http://techidiocy.com/java-lang-illegalargumentexception-wrong-fs- expected-file/ 解决了类似的问题。

  • 我收到一个错误值error:对关闭的文件执行I/O操作。当使用下面的代码时,我的其余代码似乎工作正常,有什么想法吗?

  • 需要帮助修复此错误。我试图打印出字符串国家名称的数组长度。 我从一个简历文件阅读,我一直得到上面的错误。下面是我的代码: 下面是我的TestCSV类文件: 我的csv文件如下所示:这是一个摘要,因为我不想打印出全部252个国家。基本上,我把252个国家的数据存储在一个字符串数组中,年份存储在一个整数数组中,每个国家的蜂窝数据统计数据存储在一个二维双数组中。我是编程新手,我想知道我的方向是否正确,如

  • 我在中有一个JSON文件,我试图用以下方式读取该文件: 但是,InputStream为空。 这是我传递的文件路径: 我做错了什么?

  • 我正在使用Maven创建一个Selenium项目,其中我试图从Excel文件(xlsx)中读取“username”和“password”。 这是密码- 我得到的错误在这一行: Driver.FindElement(By.XPath(“//input[@type='text']”)).SendKeys(Sheet.GetRow(i).GetCell(j).GetStringCellValue());