如何创建一个jar来包含来自不同文件夹的多个java文件

时间:2016-08-03 07:58:32

标签: java

我的项目结构如何

|---> src (folder)  
         |----> Repository (folder)  
         |----> util (folder)  
         |----> config (folder)   



|---> Repository (folder)
         |---> property file 1
         |---> property file 2
         |---> property file 3

Config文件夹与Repository文件夹具有相同的结构。

Util文件夹结构

|---> util (folder)
         |---> Main class file
         |---> Sub main class file
         |---> common function file
         |---> Report file

现在我的默认文件中的util文件夹下的Main类文件从Repository和config文件夹下的文件中获取数据。它还有一个链接,用于打开Sub主类文件,并使用common文件本身下的common函数和Report文件。

我成功地能够从Eclipse运行代码,但现在我需要创建一个jar文件来执行这些操作。我尝试从命令提示符和Eclipse创建一个jar文件,它打开Main类文件UI但无法从其他文件夹文件中提取数据或无法打开子主类文件。

我对这个罐子里的东西很新,并且不太了解它。

建议?

3 个答案:

答案 0 :(得分:3)

您可以使用以下命令构建jar并指定主类入口点(Main)。

jar cfe output.jar Main src/Repository/* src/util/*.class

答案 1 :(得分:1)

创建jar时可以编写多个文件

jar cf Output.jar src/util/Main.class src/util/SubMain.class src/Repository/*

编辑 根据评论中更新的要求

使用此方法,您只需创建jar即可。请注意,它与可执行jar不同。要创建可执行文件jar,您必须指定在单击此jar时要执行的主类。

要指定该文件,您需要创建MANIFEST.MF

创建一个名为MANIFEST.MF的文件并将其放在META-INF文件夹中,并在命令行中创建jar时将其包含在内

META-INF/MANIFEST.MF
Manifest-Version: 1.0
Main-Class: com.path.to.MainClass

答案 2 :(得分:0)

当您在jar中打包文件时,它们不再是文件。它们变成溪流/斑点。确保您没有在代码中加载任何属性文件File。使用下面的代码加载属性文件。

InputStream inputStreamObject = getClass().getResourceAsStream(file_name);
        BufferedReader streamReader = new BufferedReader(new InputStreamReader(inputStreamObject, "UTF-8"));
        StringBuilder responseStrBuilder = new StringBuilder();
        String inputStr;
        while ((inputStr = streamReader.readLine()) != null)
            responseStrBuilder.append(inputStr);