[modules-dev] re-export failed 'Imported module in error state'

Stanley M. Ho Stanley.Ho at Sun.COM
Thu Apr 17 10:35:13 PDT 2008


Hi Benedikt,

Re-export is already implemented, but the way you declare a module to be 
re-exported has changed since the early draft. Instead of importing a 
module using "uses", you should use @ImportModule instead. e.g.

package module_impl1;
import java.lang.reflect.Superpackage.*;
import java.module.annotation.*;
@Version("1.0")
@ImportModules({
    @ImportModule(name="java.se"),
    @ImportModule(name="module_API", reexport=true)
})
class super_package {
    export module_impl1$Factory;
}

and

package myProject;
import java.lang.reflect.Superpackage.*;
import java.module.annotation.*;
@MainClass("myProject.Main")
@Version("1.0")
@ImportModules({
    @ImportModule(name="java.se"),
    @ImportModule(name="module_impl1")
})
class super_package {
    exports myProject$Main;
}

Hope it helps.

- Stanley


Benedikt Hauptmann wrote:
> Hi Everyone,
> 
> I tried to test the following scenario with source-release 09_apr_2008:
> 
> Super package 'module_API' contains a set of interfaces describing an
> custom API.
> Both 'module_impl1' and 'module_impl2' containing implementations of the
> interfaces declared in 'module_API'.
> 
> 	package module_impl1;
> 	import java.lang.reflect.Superpackage.*;
> 	import java.module.annotation.*;
> 	@Version("1.0")
> 	class super_package {
> 	    exports module_impl1$Factory, module_API$IConnection,
> module_API$IResult;
> 	    uses java$se, module_API;
> 	}
> 
> As you can see, module_impl1 also re-exports module_API$IConnection and
> module_API$IResult!!!!!!! (ref: JSR-277, 02.10.06, Page 16)
> 
> 'myProject' is using 'module_impl1':
> 
> 	package myProject;
> 	import java.lang.reflect.Superpackage.*;
> 	import java.module.annotation.*;
> 	@MainClass("myProject.Main")
> 	@Version("1.0")
> 	class super_package {
> 	    exports myProject$Main;
> 	    uses java$se, module_impl1;
> 	}
> 
> 
> Compiling and packaging works fine.
> But starting 'myProject' crashes with the following exception:
> 
> 	importdep:
> [ImportDependency[imported-module=java.se,version-constraint=0+],
> ImportDependency[imported-module=module_impl1,version-constraint=0+]]
> 	imported content: ModuleDefinition java.se v1.7 (bootstrap
> repository)
> 	imported content: ModuleDefinition module_impl1 v1.0
> (application repository)
> 	importdep:
> [ImportDependency[imported-module=java.se,version-constraint=0+],
> ImportDependency[imported-module=module_API,version-constraint=0+]]
> 	imported content: ModuleDefinition java.se v1.7 (bootstrap
> repository)
> 	imported content: ModuleDefinition module_API v1.0 (application
> repository)
> 	importdep:
> [ImportDependency[imported-module=java.se,version-constraint=0+]]
> 	imported content: ModuleDefinition java.se v1.7 (bootstrap
> repository)
> 	Validation succeeded: ModuleDefinition module_API v1.0
> (application repository)
> 	XXX initialization failed:
> 	java.module.ModuleInitializationException: Validation: module
> module_impl1 v1.0 and imported module module_API v1.0 both define the
> packages [module_API]
> 	        at sun.module.core.ModuleImpl.fail(ModuleImpl.java:246)
> 	        at
> sun.module.core.ModuleImpl.shallowValidate(ModuleImpl.java:662)
> 	        at
> sun.module.core.ModuleImpl.validate(ModuleImpl.java:542)
> 	        at
> sun.module.core.ModuleImpl.nextStep(ModuleImpl.java:321)
> 	        at
> sun.module.core.ModuleImpl.nextStep(ModuleImpl.java:316)
> 	        at
> sun.module.core.ModuleImpl.initStep(ModuleImpl.java:281)
> 	        at
> sun.module.core.ModuleSystemImpl$Initializer.initializeModules(ModuleSys
> temImpl.java:368)
> 	        at
> sun.module.core.ModuleSystemImpl$Initializer.serviceQueues(ModuleSystemI
> mpl.java:337)
> 	        at
> sun.module.core.ModuleSystemImpl$Initializer.run(ModuleSystemImpl.java:2
> 95)
> 	        at java.lang.Thread.run(Thread.java:674)
> 	XXX initialization failed:Error: Imported module in error state:
> Module module_impl1 v1.0 (application repository)
> 	
> 	java.module.ModuleInitializationException: Imported module in
> error state: Module module_impl1 v1.0 (application repository)
> 	        at sun.module.core.ModuleImpl.fail(ModuleImpl.java:246)
> 	        at
> sun.module.core.ModuleImpl.checkDependencies(ModuleImpl.java:607)
> 	        at
> sun.module.core.ModuleImpl.checkDependencies(ModuleImpl.java:620)
> 	Press any key to continue . . .
> 
> 
> Is this a bug in openJDK, or is re-exporting not yet implemented?
> 
> Thanks,
> 	Benedikt
> 
> mail at benedikthauptmann.de
> www.benedikthauptmann.de
> _______________________________________________
> modules-dev mailing list
> modules-dev at openjdk.java.net
> http://mail.openjdk.java.net/mailman/listinfo/modules-dev



More information about the modules-dev mailing list