2016-08-01 79 views
-1

我将一些类和库打包到单个JAR文件中。但是当前的代码无法像原样那样访问JAR文件中的文件。如何以字符串的形式访问JAR文件中的文件

String scenarioFile = "netlogo/Altruism.nlogo"; 
// InputStream is = this.getClass().getResourceAsStream(scenarioFile); 
simulator = HeadlessWorkspace.newInstance(); 
simulator.open(scenarioFile); 

.open需要一个字符串,但我读到,我需要使用inputstream格式,因此它不工作。有没有其他解决方法?

+0

什么是'HeadlessWorkspace.'? – Tunaki

+0

@Tunaki嘿Tunaki,它的一个包“import org.nlogo.headless.HeadlessWorkspace;” –

+0

我在那里看到一个['openFromSource'](https://ccl.northwestern.edu/netlogo/4.1/docs/javadoc/org/nlogo/headless/HeadlessWorkspace.html#openFromSource(java.lang.String))串。也许你可以读取一个字符串中的InputStream并将其传递给该方法?否则,您需要将资源复制到临时文件中并使用该路径... – Tunaki

回答

0

在Tunaki的帮助下,我能够得到一个方法来做到这一点,它的工作!

我所做的就是下载commons.io.jar文件

import org.apache.commons.io.*; 

,然后使用一个InputStream来读取文件,然后将其转换为字符串,并使用openFromSource方法Tunaki建议HeadlessWorkspace包的阅读它。

InputStream is = this.getClass().getResourceAsStream(NetlogoFile); 
      String scenarioFile = IOUtils.toString(is, "UTF-8"); 
     simulator = HeadlessWorkspace.newInstance(); 
     simulator.openFromSource(scenarioFile); 
相关问题