Как запустить Jetty на IKVM? - PullRequest
1 голос
/ 11 июня 2011

Я новичок в пристани. Я пытаюсь запустить Jetty с IKVM. Однако это исключение. Я не уверен, что мне делать.

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

Кажется, мне нужно установить несколько внешних библиотек, чтобы это работало. Но что мне нужно для установки.

Среда свежая и чистая:

Ubuntu 11.04
IKVM 0.40.0.1
Java 1.6.0_22
Mono 2.6.7

Обновление от 28 июня 2010 года

Я думаю, я заставляю это работать. Но я не пробовал загружать классы .NET в молу. Кстати, я использовал грязный метод, который я заменил /usr/bin/java и /usr/lib/jvm/default-jvm/java на ikvm.exe. Поэтому каждый раз, когда я набираю java, это на самом деле IKVM.

Я попытаюсь загрузить классы .NET на пристани. Но я не знаком с пристанью, поэтому могу подождать.

Обновление от 1 июля 2010 года

Я попытался загрузить класс .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)

Ответы [ 2 ]

0 голосов
/ 02 августа 2011

jar-файлы, которые вы генерируете с помощью ikvmstub, предназначены только для компилятора java, а не для среды выполнения.Компилятор Java не может работать с DLL-библиотеками .NET.Для выполнения вам нужно использовать dll напрямую.

Мы используем причал без проблем с IKVM, но мы используем более новую версию 0.46.Самое простое - вы создаете все jar-файлы за один шаг с помощью общего загрузчика классов.Подробнее см. ikvm wiki .

0 голосов
/ 11 июня 2011

Можете ли вы запустить Jetty с помощью 'java -jar start.jar'?

Я подозреваю, что вам нужно хотя бы несколько базовых файлов JAR для Jetty, даже если загрузчик классов динамически загружает все, что нужно. Похоже, что это сбой в инициализации журнала.

Добавьте файл JAR xerces в путь к классам при запуске IKVM.

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

Обновление

Я только что просмотрел jetty.sh и есть несколько вещей, которые настраивает файл скрипта. Вам нужно будет просмотреть этот файл и определить, что вам нужно из него, или заменить все экземпляры java на ikvm и знать, что Jetty также использует tools.jar

...