Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 365130

Summary: People will get warning there is unsigned contents for EDT 070 release build
Product: z_Archived Reporter: Jing Qian <jqian>
Component: EDTAssignee: Project Inbox <edt.builds-inbox>
Status: NEW --- QA Contact:
Severity: normal    
Priority: P3 CC: jspadea, smythew, svihovec, wxwu
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Jing Qian CLA 2011-11-29 15:26:29 EST
During the installation of EDT 070 release build, you will get a warning saying there is unsigned contents for the org.eclipse.edt.runtime.java plugin

Currently in 070, this plugin is not signed. 
Because if it is signed, you would get the following error when running Eunit testing in java

eglx.lang.DynamicAccessException Creation of a delegate for function executeLibTest failed due to java.lang.SecurityException: class "org.eclipse.edt.eunit.runtime.MultiStatus"'s signer information does not match signer information of other classes in the same package
	at eglx.lang.AnyException.fillInStackTrace(AnyException.java:187)
	at java.lang.Throwable.<init>(Throwable.java:181)
	at java.lang.Exception.<init>(Unknown Source)
	at java.lang.RuntimeException.<init>(Unknown Source)
	at eglx.lang.AnyException.<init>(AnyException.java:32)
	at eglx.lang.DynamicAccessException.<init>(DynamicAccessException.java:22)
	at org.eclipse.edt.javart.Delegate.<init>(Delegate.java:33)
	at eunitgen.aeunit.smoke.SmokeLib.invokeTheTest(SmokeLib.java:38)
	at eunitgen.RunAllTests_pgm.main(RunAllTests_pgm.java:2002)
	at org.eclipse.edt.javart.resources.RunUnitBase.start(RunUnitBase.java:239)
	at eunitgen.RunAllTests_pgm.main(RunAllTests_pgm.java:509)
Caused by: java.lang.SecurityException: class "org.eclipse.edt.eunit.runtime.MultiStatus"'s signer information does not match signer information of other classes in the same package
	at java.lang.ClassLoader.checkCerts(Unknown Source)
	at java.lang.ClassLoader.preDefineClass(Unknown Source)
	at java.lang.ClassLoader.defineClassCond(Unknown Source)
	at java.lang.ClassLoader.defineClass(Unknown Source)
	at java.security.SecureClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.defineClass(Unknown Source)
	at java.net.URLClassLoader.access$000(Unknown Source)
	at java.net.URLClassLoader$1.run(Unknown Source)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.net.URLClassLoader.findClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
	at java.lang.ClassLoader.loadClass(Unknown Source)
	at java.lang.Class.getDeclaredMethods0(Native Method)
	at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
	at java.lang.Class.getDeclaredMethod(Unknown Source)
	at org.eclipse.edt.javart.Delegate.<init>(Delegate.java:30)
	... 4 more

The root cause is because in the EGL workspace, there are egl files created under the same package as the ones inside javaruntime jar, in this case: org.eclipse.edt.eunit.runtime package.

Possible Solution

1. sign the java runtime plugin jar, so user won't get the warning during install
- split the org.eclipse.edt.eunit.runtime package, so the egl parts in the workspace are in different package. 
However, user would still hit the same issue, if they have parts that's under any egl system packages (i.e. eglx.lang), according to Brian, it might be ok to put such restriction, user should not declare any egl parts using any of the system package name

2. figure out a way to package java runtime plugin as directory, and have a unsigned jar file within the directory, this might fool the installation, so no warnings
- we may need to modify the java classpath for any egl project to use this new jar
Comment 1 Jing Qian CLA 2011-11-29 15:27:49 EST
target this for EDT 1.0