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

将资源装入罐子并访问它们

东龙野
2023-03-14

我对Java还很陌生,在将应用程序导出到可运行的JAR时遇到了麻烦。我的应用程序使用Saxon运行一些转换,我希望样式表可以放在可运行的JAR中。

我在src下创建了一个子文件夹,并将所有样式表放入其中。我访问它们的方式如下:

xsltexps = comp.compile(new StreamSource(new File(this.getClass().getResource("/stylesheets/" + stylesheets).toURI())));

如果我在eclipse中运行它,一切工作都很好。当我将它导出为可运行的jar并运行它时,我会得到以下异常

线程“main”java.lang.Reflect.InvocationTargetException在sun.reflect.NativeMethodAccessorImpl.Invoke0(原生方法)在sun.reflect.DelegatingMethodAccessorImpl.Invoke(未知源)在java.lang.Reflect.MethodInvoke(未知源)在org.eclipse.jdt.internal.jarinjarLoader.jarsrcloader.jarsrcloader.main(jarsrcloader.java:58)
由:java.lang.IllegalArgumentException:java.io.file中URI不是分层的

我甚至不知道那是什么意思。

共有1个答案

寿高阳
2023-03-14

好吧,下面是实际工作的结果:

xsltexps = comp.compile(new StreamSource(
    getClass().getResourceAsStream("/stylesheets/" + stylesheets)));

最重要的更改是使用GetResourceStream而不是GetResource

 类似资料:
  • 问题内容: 我有一个包含要分发的资源(主要是缓存,日志记录等的配置)的文件。 我对这些资源的相对路径有疑问,所以我做了在另一个stackoverflow问题中发现的问题,该问题说这是有效的方法: 不幸的是,这不起作用。 有任何想法吗?谢谢! PS:显然我不能使用绝对路径,如果可能,我想避免使用环境变量 问题答案: 确保资源文件夹在项目设置中列为源文件夹。另外,确保在构建jar时将资源文件夹设置为导

  • 问题内容: 第一。我知道关于如何访问jar文件中的图像已经存在各种主题。第二。我尝试了很多选择,但没有一个没有用。我当然知道在某个地方我犯了一个错误。您能帮助我了解我在做什么错吗? 因此,我有一个名为“ j”的原型项目,它仅包含一个Java类- 客户端。客户端尝试访问图像good.png。将所有文件打包到可执行jar文件后,客户端将无法访问文件。我在月食中工作,并使用蚂蚁。 com.pupcom.

  • 什么是ClassPath 简单说来ClassPath就是查找class文件的路径,在Tomcat等容器下,ClassPath一般是WEB-INF/classes,在普通java程序中,我们可以通过定义-cp或者-classpath参数来定义查找class文件的路径,这些路径就是ClassPath。 为了项目方便,我们定义的配置文件肯定不能使用绝对路径,所以需要使用相对路径,这时候最好的办法就是把配

  • 我有1个根项目和3个模块(api,模型,存储)在其中。以下是项目结构: 在我的application.java中,我试图从参考资料中读取CSV文件: 解决了此代码工作良好: 要了解更多详细信息,请检查以下答案:作为jar运行时未找到classpath资源

  • 我正在尝试从类路径/JAR 文件作为文件对象访问资源。我知道这是使用输入流对象的首选方法,但我使用的是需要文件对象的外部库(WorldEdit)。 这是我的代码: 现在,当我还在eclipse中时,访问资源的两种方式都可以完美地工作并产生以下输出: 但是,在将代码导出到 JAR 存档后,代码将失败: 因此,我一直在寻找一种方法,要么直接以文件形式访问资源,要么使用InputStream并将该Inp

  • ServletContext接口定义了三个方法来访问当前Web应用程序的资源文件,这三个方法如下: l getResourcePaths方法 该方法返回指定Web应用程序目录中的所有子目录和文件,这些返回的目录文件不包括嵌套目录和文件。这些返回的子目录和文件都封装在该方法返回的一个Set对象中。getResourcePaths方法的定义如下: public Set getResourcePaths