Tag: 资源

如何在Clojure中加载程序资源

如何在Clojure程序中加载程序资源,如图标,字符串,图形元素,脚本等? 我使用的项目布局类似于许多Java项目中的项目布局,其中“资源”目录悬挂在“源”目录之外。 从源创建一个jar文件并包含资源,但我似乎无法像在Java中那样加载资源。 我尝试的第一件事就像是 (ClassLoader/getSystemResource “resources/myscript.js”) 但永远找不到资源。 你可以做类似的事情 … (let [cls (.getClass net.mydomain.somenamespace) strm (.getResourceAsStream cls name) ] … 其中name是要加载的资源的name ,但流是nil 。 您可以尝试使用类似的上下文类加载器 … (let [thr (Thread/currentThread) ldr (.getContextClassLoader thr) strem (.getResourceAsStream ldr name)] … 但是, strem总是零。 令人沮丧的是,我尝试将资源文件放在程序的几乎每个目录中。 它们被正确地复制到jar中,但我似乎仍然无法加载它们。 我已经查看了load函数和运行时库的语言来源,但我没有“得到”它。 任何帮助,将不胜感激。 编辑 :这是一个更具体的例子。 在Java中,如果要将MarkDown转换为HTML,可以使用showdown.js脚本并编写如下内容: package scriptingtest; import java.io.InputStreamReader; import javax.script.Invocable; import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; public […]

在Java中使用资源文件

我刚开始使用“Java资源文件”,我有几个问题…… 我希望将我的程序分发给其他人,我假设JAR文件不是最好的方法。 我可能会通过“转换为exe”来实现这个好习惯吗? 有什么限制? 如果我转换为exe,它会保留资源文件吗? 我其实只是想尝试使用资源文件。 此文件是一个文本文件,只保存某些文件的用户目录,因此每次打开程序时都不需要设置它们。 这是最好的方式吗? 你如何在代码本身中引用资源文件? 这就是我所做的。 创建了一个新的资源文件,因为我使用的是Netbeans,我可以在导航器的files选项卡下看到它的位置,如下所示: Mainproject 建立 类 我的课 资源 directories.txt 这是我试图访问它的方式,但是当我调试它时会返回null。 private void getPaths()//todo { try { InputStream is = getClass().getResourceAsStream(“/resources/directories.txt”); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); String line; while ((line = br.readLine()) != null) { System.out.println(line); } br.close(); isr.close(); is.close(); } catch(Exception e) […]

在jar依赖项中读取资源文件

在我解释我的问题之前 – 我试图在已经问过的问题中找到解决方案,但它们都没有工作;) 我正在尝试读取jar中的文件,这是另一个项目的依赖项。 此文件位于路径下 /src/main/resources/driver 项目被打包到jar文件中。 来自资源的DRIVER使用pom包含在jar中: src/main/resources * 另外,当我解压jar时,我可以看到它被添加到jar的根目录中。 我需要做的是将此文件从jar内部复制到磁盘上的目录。 只要项目通过IntelliJ作为依赖项目添加,一切正常。 当我在POM中添加它作为依赖项时,我得到一个NullPointerException。 我用来加载这个文件的代码如下所示: String sourceFilePath = this.getClass().getClassLoader().getResource(driverFileName).getPath(); 我也尝试了不同的方法: String sourceFilePath = this.getClass().getResource(“driver”).getPath(); String sourceFilePath = this.getClass().getResource(“/driver”).getPath(); String sourceFilePath = this.getClass().getClassLoader().getResource(“driver”).getPath(); String sourceFilePath = this.getClass().getClassLoader().getResource(“/driver”).getPath(); 但每次尝试都以相同的结果结束:调用getPath()时出现NullPointerException。 我需要解决方案,因为作为依赖项附加的项目是UI测试的框架。 到目前为止,我正在为每个需要它们的新项目添加驱动程序,但这需要时间,对于想要使用此框架的人来说更复杂,并且在发布新版本的驱动程序时会遇到很多麻烦。 我希望能够简单地为此框架添加maven依赖项,并能够使用此框架内部的驱动程序。 这里的问题是我需要设置一个带有该驱动程序路径的系统变量。 所以一旦需要驱动程序,我就试图将它(代码在框架内)复制到外部位置(某些tmp目录)。 知道怎么解决吗?

在Eclipse中为Java项目存储资源的位置(图像,数据文件……)?

不确定这个基本问题是否已在SO上得到解答。 从SO上的参考和答案中我了解到,在Eclipse中,“源文件夹”是JDT将搜索源文件并编译它们的文件夹。 还提到每个源文件夹可以具有存储编译类的对应物。 也许这就是为什么项目的通常“src”文件夹的内容被编译成“bin”文件夹(在Eclipse中使用这样的src / bin项目选项时)。 问题 :存储其他非源文件的位置,例如图标,安全策略或数据文件? 我想这是在“常规”文件夹中,但在项目层次结构中的哪个级别(通常)? 是否可以将它放在源文件夹中(为什么我们这样做)? 编译或导出到.jar文件后会发生什么情况,在哪些情况下是.jar中复制的文件? 相对路径是否保留?

访问jar中的资源(在Netbeans中工作但不在命令行上)

我有一个带有捆绑资源(语言模型二进制文件)的jar文件,需要在运行时加载。 jar中的目录结构是 恶搞/ app.class 恶搞/模型/停止/ SentDetect.bin.gz 其中SentDetect.bin.gz是一个二进制的whos路径作为String参数加载到第三方类(SentDetector),即 URL url = this.getClass().getResource(“models/stop/SentDetect.bin.gz”); SentenceDetector sdetector = new SentenceDetector(url.getPath()); 虽然它在Netbeans中运行正常,但当我尝试从命令行运行它作为jar时,我在构造函数中得到一个FileNotFoundexception。 我已经仔细检查过二进制文件是否包含在已编译的Jar文件中。 我相信解决方案通常是使用getResourceAsStream()将数据作为输入流加载,但这不是一个选项,因为url作为String参数传递给第三方构造函数,这让我相信问题是如何将URL解析为String? 我试过了: url.getPath(); url.getFile(); url.toURI().getPath(); url.toString(); 并且所有人都给出了不同的文件路径。

Java:从文件系统加载资源

我的项目设置 我有以下项目设置: \program.jar \images\logo.png 在我的代码中,我使用相对URL “images/logo.png”引用图像。 问题 如果我在目录中使用以下命令运行此程序: c:\projects\program_dir\bin\>java -jar program.jar 然后一切正常,Java能够找到图像。 现在,我的问题是,我需要能够从不同的目录运行该程序。 c:\>java -jar c:\projects\program_dir\bin\program.jar 程序已执行,但现在所有相对URL都不再有效。 我需要的 如何计算program.jar文件的执行主页,以便我可以将相对URL更改为绝对URL?

从资源加载和解析xml的问题

我编写了一个解析器,它解析来自HttpURLConnection的xml文件。 这很好用。 问题:我需要重写这个,以便从本地资源而不是从互联网加载xml文件,但我无法让它工作……只是为了让你知道原始网络解析器的外观: InputStream in=null; URLConnection connection = url.openConnection(); HttpURLConnection httpConnection = (HttpURLConnection)connection; int responseCode = httpConnection.getResponseCode(); if (responseCode == HttpURLConnection.HTTP_OK) { in = httpConnection.getInputStream(); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document dom = db.parse(in); Element docEle = dom.getDocumentElement(); NodeList nl = docEle.getChildNodes(); for (int i = 0; i < nl.getLength(); i++) { […]

Java和Eclipse:JAR中的资源?

如何将资源(图像)直接添加到我的JAR文件中? 例如,如果您打开Minecraft.jar(Minecraft),您可以看到一些包含资源的类和文件夹。 如果我尝试将任何资源放在我的/ src文件夹中,Eclipse会在Package Explorer中显示它们,这很烦人。 当我反编译Minecraft(Minecraft Coder Pack)时,/ src文件夹中没有资源。 我怎样才能像Minecraft那样添加我的资源呢? 提前致谢!!

访问Tomcat服务器上的Web应用程序资源时出现NoSuchMethodError

在线搜索后,这是一个我无法找到答案的问题。 我的Web应用程序部署到tomcat服务器,我知道这一切都在起作用,因为index.jsp显示了文本。 但是当我尝试访问我已经创建的资源应该打印出hello world时,tomcat服务器返回此消息 java.lang.NoSuchMethodError: com.sun.jersey.core.spi.component.ProviderServices.(Lcom/sun/jersey/core/spi/factory/InjectableProviderFactory;Lcom/sun/jersey/core/spi/component/ProviderFactory;Ljava/util/Set;Ljava/util/Set;)V com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:450) com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:383) com.sun.jersey.spi.container.servlet.ServletContainer.initiate(ServletContainer.java:377) com.sun.jersey.spi.container.servlet.ServletContainer$InternalWebComponent.initiate(ServletContainer.java:242) com.sun.jersey.spi.container.servlet.WebComponent.load(WebComponent.java:449) com.sun.jersey.spi.container.servlet.WebComponent.init(WebComponent.java:169) com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:281) com.sun.jersey.spi.container.servlet.ServletContainer.init(ServletContainer.java:442) javax.servlet.GenericServlet.init(GenericServlet.java:212) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) java.lang.Thread.run(Unknown Source) 是否有任何人有任何想法或线索,为什么这将发生,这将有助于我解决这个问题? 任何帮助非常感谢谢谢克里斯

jar文件夹中的资源列表?

通常我从jar文件中读取资源如下: getClassLoader().getResource(pTextPath + “/” + pLang +”.xml”); 我需要从jar文件中的已知文件夹中读取具有特定名称的所有资源。 例如,读取* .xml 插件/资源/文 我可以根据路径和名称模板以某种方式从jar文件列表中获取资源吗? 更新:完全重复从类路径目录获取资源列表请关闭问题。