我将阅读脚本包中可用的所有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
..
..
}
}
答案 0 :(得分:0)
Hanuman,如果要创建可运行的jar,则需要通过提供完全限定的类名来配置清单文件。除此之外,这个课应该有:
public static void main(String[] args) {
有关详细信息,请访问:http://introcs.cs.princeton.edu/java/85application/jar/jar.html
答案 1 :(得分:0)
从网上获得解决方案。 这是一个方法,可以从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 */
}
}