LoginSignup
0
0

More than 1 year has passed since last update.

jar javac java command with module

Last updated at Posted at 2023-02-20

Automatic module do not have module-info.
but that is named automatically or we indicate module-name with manifest.mf.

AutoProject.java
public class AutoProject {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        System.out.println("i am auto module");
    }
    
}
NamedProject.java
public class NamedProject {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        AutoProject.main(null);
    }
    
}

make jar file of automatic module from classfiles.
you can use manifest.mf file , if you indicate module name
by using option -m.

C:\Users\java\Documents\NetBeansProjects> jar -cvfm AutoProject\dist\AutoProject.jar AutoProject\manifest.mf AutoProject\build\classes
マニフェストが追加されました
AutoProject/build/classes/を追加中です(入=0)(出=0)(0%格納されました)
AutoProject/build/classes/.netbeans_automatic_buildを追加中です(入=0)(出=0)(0%格納されました)
AutoProject/build/classes/.netbeans_update_resourcesを追加中です(入=0)(出=0)(0%格納されました)
AutoProject/build/classes/autoproject/を追加中です(入=0)(出=0)(0%格納されました)
AutoProject/build/classes/autoproject/AutoProject.classを追加中です(入=595)(出=365)(38%収縮されました)

named module reffers automatic module
named module is NamedModule
automatic module is AutoProject

C:\Users\java\Documents\NetBeansProjects\NamedProject\src>java --module-path C:\Users\java\Documents\NetBeansProjects\AutoProject\dist\AutoProject.jar;C:\Users\java\Documents\NetBeansProjects\NamedProject\dist\NamedProject.jar -m NamedModule
i am auto module

noname module can reffers named module .
we can use jar --add-modules option for indicate using named module.
In Addition, automatic module reffers named module , same as noname module reffers named module.

NonameProject.java
public class NonameProject {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        ChildProject.main(null);
        System.out.println("i am noname module");
    }
    
}
module-info.java
module ChildModule {
    exports childproject;
    requires ParentModule;
}
ChildProject.java
public class ChildProject {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        Object o = Factory.create();
        try{
            Method m = o.getClass().getMethod("method");
            m.invoke(o);
            
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}
C:\Users\java\Documents\NetBeansProjects> javac --module-path C:\Users\java\Documents\NetBeansProjects\ChildProject\dist\ChildProject.jar --add-modules ChildModule nonameproject\NonameProject.java
C:\Users\java\Documents\NetBeansProjects> java --module-path C:\Users\java\Documents\NetBeansProjects\ChildProject\dist\ChildProject.jar;C:\Users\java\Documents\NetBeansProjects\ParentProject\dist\ParentProject.jar --add-modules ChildModule nonameproject.NonameProject
 i am parentproject method
i am noname module

Automatic module refers noname module

C:\Users\java\Documents\NetBeansProjects\AutoProject\build\classes>java --class-path C:\Users\java\Documents\NetBeansProjects\NonameProject\dist\NonameProject.jar;. autoproject.AutoProject
i am noname module
i am auto module
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0