Borisov Grigoriy Borisov Grigoriy - 5 months ago 60
Java Question

Cant start jetty from command line

When i try to start from command line jetty its failed : Error unable to access jarfile start.jar. I`ve added to $path enviroment variable the path to jetty bun nothing happened.
Before I wanted to run my app on jetty, but collided with this in output console of intellij:

"C:\Program Files\Java\jdk1.7.0_25\bin\java" -agentlib:jdwp=transport=dt_socket,address=127.0.0.1:16231,suspend=y,server=n -DSTOP.PORT=0 -Dcom.sun.management.jmxremote= -Dcom.sun.management.jmxremote.port=1099 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -DOPTIONS=jmx -Dfile.encoding=windows-1251 -classpath "start.jar;C:\Program Files (x86)\JetBrains\IntelliJ IDEA 12.0\lib\idea_rt.jar" org.eclipse.jetty.start.Main etc/jetty-jmx.xml C:\Users\Grigoriy\AppData\Local\Temp\context4870587588634592162config\jetty-contexts.xml
[2013-11-25 03:17:23,756] Artifact sandbox:war exploded: Server is not connected. Press 'Deploy' to start deployment.
Connected to the target VM, address: '127.0.0.1:16231', transport: 'socket'
2013-11-25 03:17:25.237:WARN:oejx.XmlConfiguration:main: Config error at <Call name="addBean"><Arg>| <New class="org.eclipse.jetty.monitor.ThreadMonitor"><Set name="scanInterval">2000</Set><Set name="busyThreshold">90</Set><Set name="stackDepth">3</Set><Set name="trailLength">2</Set></New>| </Arg></Call> java.lang.ClassNotFoundException: org.eclipse.jetty.monitor.ThreadMonitor in file:/D:/servers/jetty907/jetty-distribution-9.0.7.v20131107/etc/jetty-monitor.xml
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.jetty.start.Main.invokeMain(Main.java:509)
at org.eclipse.jetty.start.Main.start(Main.java:651)
at org.eclipse.jetty.start.Main.main(Main.java:99)
Caused by: java.lang.ClassNotFoundException: org.eclipse.jetty.monitor.ThreadMonitor
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.eclipse.jetty.util.Loader.loadClass(Loader.java:100)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.nodeClass(XmlConfiguration.java:364)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.newObj(XmlConfiguration.java:754)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.itemValue(XmlConfiguration.java:1125)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.value(XmlConfiguration.java:1030)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.call(XmlConfiguration.java:721)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:417)
at org.eclipse.jetty.xml.XmlConfiguration$JettyXmlConfiguration.configure(XmlConfiguration.java:354)
at org.eclipse.jetty.xml.XmlConfiguration.configure(XmlConfiguration.java:262)
at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1238)
at java.security.AccessController.doPrivileged(Native Method)
at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1174)
... 7 more

Usage: java -jar start.jar [options] [properties] [configs]
java -jar start.jar --help # for more information
Disconnected from the target VM, address: '127.0.0.1:16231', transport: 'socket'
Disconnected from server

Process finished with exit code -2


Update.
This is my jetty-deploy.xml`

<Call id="webappprovider" name="addAppProvider">
<Arg>
<New class="org.eclipse.jetty.deploy.providers.WebAppProvider">
<Set name="monitoredDirName"><Property name="jetty.home" default="." />/webapps</Set>
<Set name="defaultsDescriptor"><Property name="jetty.home" default="." />/etc/webdefault.xml</Set>
<Set name="scanInterval">1</Set>
<Set name="extractWars">true</Set>
<Set name="configurationManager">
<New class="org.eclipse.jetty.deploy.PropertiesConfigurationManager">
</New>
</Set>
</New>
</Arg>
</Call>`


So, i dont understand in what time and why ContextProvider replace WebAppProvider.

Answer

From your error messages...

2013-11-25 03:17:25.237:WARN:oejx.XmlConfiguration:main: Config error at 
<Call name="addBean">
    <Arg>
        <New class="org.eclipse.jetty.monitor.ThreadMonitor">
            <Set name="scanInterval">2000</Set>
            <Set name="busyThreshold">90</Set>
            <Set name="stackDepth">3</Set>
            <Set name="trailLength">2</Set>
        </New>
    </Arg>
</Call>

java.lang.ClassNotFoundException: org.eclipse.jetty.monitor.ThreadMonitor 
   in file:/D:/servers/jetty907/jetty-distribution-9.0.7.v20131107/etc/jetty-monitor.xml

We can quickly see that you are running Jetty Distribution 9.0.7.v20131107, and that likely don't have the jetty-monitor jar in your classpath.

(Note: these instructions are different for Jetty 9.1 and newer)

To test the server classpath, run this command line.

D:\servers\jetty907\jetty-distribution-9.0.7.v20131107> java -jar start.jar --version
Active Options: [Server, annotations, client, ext, jaas, jmx, jndi, jndi.demo, jsp, plus, resources, rewrite, websocket]
Version Information on 37 entries in the classpath.
Note: order presented here is how they would appear on the classpath.
      changes to the OPTIONS=[option,option,...] command line option will be reflected here.
 0:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-xml-9.0.7.v20131107.jar
 1:  3.0.0.v201112011016 | ${jetty.home}/lib/servlet-api-3.0.jar
 2:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-http-9.0.7.v20131107.jar
 3:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-continuation-9.0.7.v20131107.jar
 4:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-server-9.0.7.v20131107.jar
 5:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-security-9.0.7.v20131107.jar
 6:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-servlet-9.0.7.v20131107.jar
 7:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-webapp-9.0.7.v20131107.jar
 8:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-deploy-9.0.7.v20131107.jar
 9:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-annotations-9.0.7.v20131107.jar
10:  1.1.0.v201108011116 | ${jetty.home}/lib/annotations/javax.annotation-1.1.0.v201108011116.jar
11:  3.1.0.v200803061910 | ${jetty.home}/lib/annotations/org.objectweb.asm-3.1.0.v200803061910.jar
12:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-client-9.0.7.v20131107.jar
13:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-jaas-9.0.7.v20131107.jar
14:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-jmx-9.0.7.v20131107.jar
15:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-jndi-9.0.7.v20131107.jar
16:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-plus-9.0.7.v20131107.jar
17:  1.1.0.v201105071233 | ${jetty.home}/lib/jndi/javax.activation-1.1.0.v201105071233.jar
18:  1.4.1.v201005082020 | ${jetty.home}/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar
19:                1.1.1 | ${jetty.home}/lib/jndi/javax.transaction-1.1.1.v201105210645.jar
20:      9.0.7.v20131107 | ${jetty.home}/lib/jndi.demo/test-mock-resources-9.0.7.v20131107.jar
21:  2.2.0.v201303151357 | ${jetty.home}/lib/jsp/com.sun.el-2.2.0.v201303151357.jar
22:  2.2.0.v201303151357 | ${jetty.home}/lib/jsp/javax.el-2.2.0.v201303151357.jar
23:  1.2.0.v201105211821 | ${jetty.home}/lib/jsp/javax.servlet.jsp.jstl-1.2.0.v201105211821.jar
24:  2.2.0.v201112011158 | ${jetty.home}/lib/jsp/javax.servlet.jsp-2.2.0.v201112011158.jar
25:  2.2.2.v201112011158 | ${jetty.home}/lib/jsp/org.apache.jasper.glassfish-2.2.2.v201112011158.jar
26:  1.2.0.v201112081803 | ${jetty.home}/lib/jsp/org.apache.taglibs.standard.glassfish-1.2.0.v201112081803.jar
27: 3.8.2.v20130121-145325 | ${jetty.home}/lib/jsp/org.eclipse.jdt.core-3.8.2.v20130121.jar
28:                (dir) | ${jetty.home}/resources
29:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-rewrite-9.0.7.v20131107.jar
30:      9.0.7.v20131107 | ${jetty.home}/lib/websocket/websocket-api-9.0.7.v20131107.jar
31:      9.0.7.v20131107 | ${jetty.home}/lib/websocket/websocket-client-9.0.7.v20131107.jar
32:      9.0.7.v20131107 | ${jetty.home}/lib/websocket/websocket-common-9.0.7.v20131107.jar
33:      9.0.7.v20131107 | ${jetty.home}/lib/websocket/websocket-server-9.0.7.v20131107.jar
34:      9.0.7.v20131107 | ${jetty.home}/lib/websocket/websocket-servlet-9.0.7.v20131107.jar
35:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-util-9.0.7.v20131107.jar
36:      9.0.7.v20131107 | ${jetty.home}/lib/jetty-io-9.0.7.v20131107.jar

The 2 things to look for:

  1. The "Active Options" line should have "monitor" listed
  2. The list of jars in your classpath should mention "jetty-monitor" somewhere.

In the above example, you can see neither of these are present.

So we'll add them to the startup. (Ensure the following 2 lines appear in your start.ini)

OPTIONS=monitor
etc/jetty-monitor.xml

Then re-run your test of the classpath java -jar start.jar --version and see that you now have the classpath entry for ${jetty.home}/lib/monitor/jetty-monitor-9.0.7.v20131107.jar