可运行 Jar 文件 - src 文件路径问题
Posted
技术标签:
【中文标题】可运行 Jar 文件 - src 文件路径问题【英文标题】:Runnable Jar file - src file path issue 【发布时间】:2014-02-17 10:50:39 【问题描述】:我必须阅读脚本包中所有可用的 java 文件名来执行特定的方法。 下面的代码使用 eclipse 可以正常工作。 我想使用 Runnable Jar 运行测试 - 因为 strTestScriptsPath = "src/com/xyz/test/scripts" 包含 src,它正在失败 (否则我必须将 src 文件夹提供给 JAR 文件才能成功运行)
在这种情况下如何使用 this.getClass().getResourceAsStream()
注意:我试图给出目录的路径而不是文件。我只需要从上面的代码中获取文件名:(
public static boolean executeKeyword(String keyword)
String strTestScriptsPath = "src/com/xyz/test/scripts";
File folder = new File( strTestScriptsPath );
File[] listOfFiles = folder.listFiles();
boolean booFindMethod = false;
findKeyword:
for(File file: listOfFiles )
strJavaClassFileName = FilenameUtils.removeExtension( file.getName());
strJavaClassFileName = "com.xyz.test.scripts." + strJavaClassFileName;
System.out.println(strJavaClassFileName);
// Reflection API code to call the required method from the class
..
..
【问题讨论】:
jar 文件应该位于 ../src 【参考方案1】:Hanuman,如果你想创建一个可运行的 jar,你需要通过提供完全限定的类名来配置清单文件。除此之外,这个类应该有:
public static void main(String[] args)
详细信息请访问:http://introcs.cs.princeton.edu/java/85application/jar/jar.html
【讨论】:
@Nikhil,感谢您的回复。我提供了具有 main 方法的 Main 类并且 JAR 正在运行。这里的问题是代码中的路径。请再次阅读问题 1.您是否对该文件夹具有读取权限。 2. com.xyz.test.scripts.从网上得到了解决方案。 这是可以从 JAR 文件的包中获取类列表的方法。
public static List<String> getJarFileListing(String jarLocation, String filter)
List<String> files = new ArrayList<String>();
if (jarLocation == null)
return files; // Empty.
// Lets stream the jar file
JarInputStream jarInputStream = null;
try
jarInputStream = new JarInputStream(new FileInputStream(jarLocation));
JarEntry jarEntry;
// Iterate the jar entries within that jar. Then make sure it follows the
// filter given from the user.
do
jarEntry = jarInputStream.getNextJarEntry();
if (jarEntry != null)
String fileName = jarEntry.getName();
// The filter could be null or has a matching regular expression.
if (filter == null || fileName.matches(filter))
files.add(fileName);
while (jarEntry != null);
jarInputStream.close();
catch (IOException ioe)
throw new RuntimeException("Unable to get Jar input stream from '" + jarLocation + "'", ioe);
return files;
并调用上面的函数..
public static void main(String args[]) throws IOException
List<String> listOfFiles = getJarFileListing("C:\Users\abc\xyz.jar","^com/xyz/test/scripts(.*)");
/* Reflection API code */
【讨论】:
以上是关于可运行 Jar 文件 - src 文件路径问题的主要内容,如果未能解决你的问题,请参考以下文章