Works with Eclipse 2019-06 or later |
jetty-distribution
or jetty-home
)The version of Jetty should match the |
The Jetty directory should be set as the |
java-idp-testbed
, java-identity-provider
, and java-idp-jetty-base
source code repositories as peers in the same directory :git clone git@git.shibboleth.net:java-idp-testbed git clone git@git.shibboleth.net:java-idp-jetty-base git clone git@git.shibboleth.net:java-identity-provider |
git clone git@git.shibboleth.net:java-support git clone git@git.shibboleth.net:spring-extensions git clone git@git.shibboleth.net:java-opensaml |
File > Import > Maven > Existing Maven Projects
9.4-testbed-eclipse
branch of java-idp-jetty-base
cd java-identity-provider/idp-war mvn clean package -DskipTests rm target/idp-war-*/WEB-INF/lib/idp-*.jar |
Optionally remove additional JARs :
rm target/idp-war-*/WEB-INF/lib/java-support-*.jar rm target/idp-war-*/WEB-INF/lib/spring-extensions-*.jar rm target/idp-war-*/WEB-INF/lib/opensaml-*.jar |
cd java-idp-jetty-base/src/main/resources/jetty-base java -jar $jetty.home/start.jar --create-files |
In the idp-testbed
project, right-click on idp-testbed-jetty-9.4.launch > Run As > Java Application
https://localhost:8443/index.html
You will probably want to change the root logging level from DEBUG
to INFO
in idp-conf/src/test/resources/logback-test.xml
Running the IdP testbed in Eclipse with Jetty version 9.4 requires classpath changes.
I believe this is because :
The code that was changed in 9.4, is that we no long look to load classes/resources from the same classloader that loader jetty. That was really just encouraged code to not properly set the thread context classloader.
For this method to work for you, then the class you are looking for needs to either be on the system classpath or visible to a Classloader that is set as the current thread context classloader. If executed from within a webapp, you will have a classloader that is able to see WEB-INF classes, but jetty and some system classes are hidden from it.
This is a deliberate change, which I think is the correct way to go. However, we are open to understand your use-case of why we may need to search a bit harder for classes, so please describe your classloader setup and classpath.
To create an Eclipse Launcher manually :
Use Eclipse Launcher "Program arguments" not "VM arguments" |
Right-click on Main.java > Run As > Java Application
Eclipse Launcher program arguments :
-Djetty.home=<path to jetty-distribution> -Didp.home=classpath: -Didp.webflows=classpath*:/flows -Djava.io.tmpdir=tmp |
Eclipse Launcher working directory :
${workspace_loc:idp-jetty-base/src/main/resources/jetty-base} |
Example Eclipse Launcher :
|