2011-06-11 63 views
1

我是新的码头。我正试图用IKVM运行Jetty。但是,它会抛出异常。我不知道我该怎么做。如何在IKVM上运行Jetty?

[email protected]:/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 

看来,我需要安装一些外部库,以使其工作。但是我需要安装什么。

环境清新洁净:

Ubuntu 11.04 
IKVM 0.40.0.1 
Java 1.6.0_22 
Mono 2.6.7 

更新2010年6月

月28日,我认为我做它的工作原理。但是我没有尝试在jetty中加载.NET类。顺便说一句,我用了一个肮脏的方法,我用ikvm.exe替换了/usr/bin/java/usr/lib/jvm/default-jvm/java。所以每当我输入实际上是IKVM的java

我将尝试在jetty中加载.NET类。但我对码头不熟悉,所以我可能需要一段时间。

更新于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) 

回答

0

你可以用'java -jar start.jar'运行Jetty吗?

我怀疑你至少需要一些jetty基础JAR文件,即使它是classloader动态加载所需的所有东西。它看起来像在日志初始化中失败。

运行IKVM时,将xerces JAR文件添加到类路径中。

ikvm -cp .:xerces.jar -jar startup.jar 

更新

我只是通过jetty.sh望去,有几件事情的脚本文件设置。您需要仔细阅读该文件并确定需要什么,或者使用ikvm替换所有java实例,并注意Jetty也使用tools.jar

+0

'java -jar start.jar'可以运行。 'ikvm -cp。:xerces.jar -jar startup.jar'得到相同的异常。 'jetty.sh'意味着'/ etc/init.d/jetty'文件吗? – 2011-06-11 02:39:18

0

您使用ikvmstub生成的jar文件是只适用于java编译器而不适用于运行时。 Java编译器也可以使用.NET dll。对于运行时,您需要直接使用dll。

我们使用没有IKVM问题的码头,但是我们使用更新的版本0.46。最简单的方法是使用共享类加载器一步构建所有jar文件。详情请参阅ikvm wiki

+0

谢谢你的回复。其实,我不太明白我需要做什么,因为我是IKVM和Jetty的新手。你能分享给我的步骤吗?非常感谢你。 – 2011-08-05 00:13:24

+0

因为码头只是项目的一小部分,所以我无法花费很多时间来回答它。首先,码头一定没有问题。然后你搜索你需要的所有jar文件,然后用一行编译它。 – Horcrux7 2011-08-08 15:21:32

相关问题