如何在IKVM上运行Jetty?
我是码头的新手。我正在尝试使用IKVM运行Jetty。然而,它抛出异常。我不知道该怎么办如何在IKVM上运行Jetty?,jetty,ikvm,Jetty,Ikvm,我是码头的新手。我正在尝试使用IKVM运行Jetty。然而,它抛出异常。我不知道该怎么办 alex@AlexUbuntu:/usr/share/jetty$ ikvm -jar start.jar 5 [main] INFO org.mortbay.log - Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog java.lang.reflect.InvocationTarget
alex@AlexUbuntu:/usr/share/jetty$ ikvm -jar start.jar
5 [main] INFO org.mortbay.log - Logging to org.slf4j.impl.SimpleLogger(org.mortbay.log) via org.mortbay.log.Slf4jLog
java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Method.java:
at org.mortbay.start.Main.invokeMain(Main.java:179)
at org.mortbay.start.Main.start(Main.java:508)
at org.mortbay.start.Main.start(Main.java:439)
at org.mortbay.start.Main.main(Main.java:99)
Caused by: cli.System.TypeLoadException: Could not load type 'org.apache.xerces.util.NamespaceSupport' from assembly 'ikvm_dynamic_assembly__40326550, Version=2011.611.1039.16726, Culture=neutral, PublicKeyToken=null'.
at org.apache.xerces.parsers.XIncludeAwareParserConfiguration.<init>(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Constructor.java:517)
at java.lang.Class.newInstance0(Class.java:333)
at java.lang.Class.newInstance(Class.java:320)
at org.apache.xerces.parsers.ObjectFactory.newInstance(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.<init>(Unknown Source)
at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParser(Unknown Source)
at org.mortbay.xml.XmlParser.setValidating(XmlParser.java)
at org.mortbay.xml.XmlParser.<init>(XmlParser.java:68)
at org.mortbay.xml.XmlConfiguration.initParser(XmlConfiguration.java)
at org.mortbay.xml.XmlConfiguration.<init>(XmlConfiguration.java:105)
at org.mortbay.xml.XmlConfiguration.main(XmlConfiguration.java:958)
... 5 more
于2010年6月28日更新
我想我成功了。但我还没有尝试在jetty中加载.NET类。顺便说一下,我使用了一个脏方法,我用ikvm.exe
替换了/usr/bin/java
和/usr/lib/jvm/default jvm/java
。所以每次我输入java
时,实际上就是IKVM
我将尝试在jetty中加载.NET类。但我不熟悉jetty,所以我可能会花些时间
2010年7月1日更新
我已尝试加载.NET类。然而,最后我得到了一条错误消息
HTTP ERROR 500
Problem accessing /hello/servlet. Reason:
ikvmstub generated stubs can only be used on IKVM.NET
Caused by:
java.lang.UnsatisfiedLinkError: ikvmstub generated stubs can only be used on IKVM.NET
at cli.CSharpClass.<init>(Unknown Source)
at HelloServlet.doPost(HelloServlet.java:28)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
at org.mortbay.jetty.Server.handle(Server.java:326)
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
HTTP错误500
访问/hello/servlet时出现问题。原因:
IKVMTUB生成的存根只能在IKVM.NET上使用
原因:
java.lang.UnsatisfiedLinkError:IKVMTUB生成的存根只能在IKVM.NET上使用
位于cli.CSharpClass。(未知源)
在HelloServlet.doPost(HelloServlet.java:28)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
位于javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
位于org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
位于org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:390)
位于org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
位于org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
位于org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765)
位于org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418)
位于org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
位于org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
位于org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
位于org.mortbay.jetty.Server.handle(Server.java:326)
位于org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
位于org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:943)
位于org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
位于org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212)
位于org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
位于org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
位于org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582)
您能用“java-jar start.jar”运行Jetty吗
我怀疑jetty至少需要几个基本JAR文件,即使它的classloader动态加载所需的所有内容。看起来日志初始化失败
运行IKVM时,将xerces JAR文件添加到类路径
ikvm -cp .:xerces.jar -jar startup.jar
更新
我刚刚浏览了jetty.sh,脚本文件设置了一些东西。您需要浏览该文件并确定需要从中获得什么,或者用ikvm替换所有java实例,并注意Jetty也使用工具。jar使用IKVSTUB生成的jar文件仅用于java编译器,而不用于运行时。java编译器不能使用.NET DLL。对于运行时,您需要直接使用DLL
我们使用jetty时IKVM没有问题,但我们使用了更新的版本0.46。最简单的方法是使用共享类加载器一步构建所有jar文件。有关详细信息,请参阅。
java-jar start.jar
可以运行ikvm-cp.:xerces.jar-jarstartup.jar
获取相同的异常。jetty.sh
是否表示/etc/init.d/jetty
文件?谢谢您的回复。事实上,我不太明白我需要做什么,因为我是IKVM和Jetty的新手。你能和我分享一下这些步骤吗?非常感谢。我必须花很多时间才能回答这个问题,因为码头只是项目的一小部分。首先,码头必须没有问题。然后搜索所有需要的jar文件,然后用一行代码编译它。
ikvm -cp .:xerces.jar -jar startup.jar