Runnable Jar文件 - src文件路径问题

时间:2014-02-17 10:50:39

标签: java jar classpath

我将阅读脚本包中可用的所有java文件名来执行特定方法。 下面的代码使用eclipse工作正常。 我想使用Runnable Jar运行测试 - 因为 strTestScriptsPath =“src / com / xyz / test / scripts”包含src,它正在失败
(否则我将提供src文件夹到JAR文件以成功运行它)

在此上下文中如何使用 this.getClass()。getResourceAsStream()

注意:我试图给出目录的路径而不是文件。我只想从上面的代码中找到文件名:(

enter image description here

        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
                ..
                ..

            }
        }

2 个答案:

答案 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 */
    }
    }