Не может заставить проножку Java работать! NoClassDefFoundError?

Я - разработчик.NET, но для моего текущего проекта я должен использовать Google Caja, проект Java. Мм о!

Я следовал руководству по http://code.google.com/p/google-caja/wiki/RunningCaja на моей машине окон, но не могу заставить программу работать. Командная строка, которую они предлагают, не работала, таким образом, я cd'd в каталог банок муравья и попробованный для выполнения plugin.jar:

D:\java\caja\svn-changes\pristine\ant-jars>java -cp . -jar pluginc.jar -i test.htm
Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/cli/ParseException
        at com.google.caja.plugin.PluginCompilerMain.(PluginCompilerMain.java:78)
        at com.google.caja.plugin.PluginCompilerMain.main(PluginCompilerMain.java:368)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.cli.ParseException
        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        ... 2 more

О чем то, что все?

Я также попробовал file:///d:/java/caja/svn-changes/pristine/ant-jars/test.htm вместо test.htm. Смотря на источник, кажется, что параметрическим усилителем файла является Uri...

Я также попытался выполнить IKVM на pluginc и затем не вызвать беспокойство о Java, но это придумало ClassDefNotFoundException также...

спасибо!

править: спасибо все для справки до сих пор :) все еще застрявший. упорно продолжите заниматься со мной, это могло бы быть запуском разработчика .NET, переключающегося на красивые технологии OSS!

d:\java\caja\svn-changes\pristine\ant-jars>java -cp .\*.* com.google.caja.plugin.PluginCompilerMain 
=> NoClassDefFoundError: /\commons-cli/jar

D:\java\caja\svn-changes\pristine\ant-jars>java -cp .\*.*;..\third_party\java\jakarta_commons\*.* com.google.caja.plugin.PluginCompilerMain
=> Could not find the main class: com.google.caja.plugin.PluginCompilerMain

Есть ли некоторый способ, которым я могу заставить это работать, учитывая код в файле build.xml?

7
задан Jim G. 18 May 2011 в 17:42
поделиться

4 ответа

Java пытается загрузить класс org.apache.commons.cli.ParseException, но не может его найти. Это говорит о том, что вы неправильно настроили путь к классам.

Этот конкретный класс взят из библиотеки CLI Apache Commons, так что поищите там банку с именем вроде cli.jar или commons-cli.jar. Он может находиться в отдельном каталоге lib . Если в том же месте есть другие банки, вам, вероятно, придется их добавить.

Изменить: глядя на файл build.xml, он использует следующий путь к классам:

  <path id="classpath.web">
    <pathelement path="${third_party}/java/jsdk2.1/servlet.jar"/>
    <pathelement path="${third_party}/java/jaf/activation.jar"/>
    <pathelement path="${third_party}/java/javamail/mail.jar"/>
    <pathelement path="${third_party}/java/jetty/lib/jetty.jar"/>
    <pathelement path="${third_party}/java/jetty/lib/jetty-util.jar"/>
  </path>
  <path id="classpath.compile">
    <path refid="classpath.web"/>
    <pathelement path="${third_party}/java/jakarta_commons/commons-cli.jar"/>
    <pathelement path="${third_party}/java/json_simple/json_simple.jar"/>
    <pathelement path="${third_party}/java/rhino/js.jar"/>
    <pathelement path="${third_party}/java/xerces/xercesImpl.jar"/>
    <pathelement path="${jars}/htmlparser.jar"/>
  </path>
  <path id="classpath.run">
    <pathelement path="${lib}"/>
    <path refid="classpath.compile"/>
  </path>

Таким образом, вам нужно включить все эти jar-файлы в аргумент cp при вызове java.

Правка №2: Как указал Эш, вы не можете использовать -cp с -jar , поэтому вам нужно будет поместить pluginc.jar в пути к классам и вручную укажите основной класс (так java -cp ...; pluginc.jar com.google.classname -i etc ).Наверное, было бы проще заставить муравья работать, чем делать все это вручную;)

11
ответ дан 6 December 2019 в 11:46
поделиться

Попробовать

java -classpath .;%classpath%; -jar pluginc.jar -i test.htm
0
ответ дан 6 December 2019 в 11:46
поделиться

Также обратите внимание, что при использовании параметра -jar все остальные настройки CLASSPATH игнорируются. См. http://java.sun.com/javase/6/docs/technotes/tools/windows/java.html :

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

6
ответ дан 6 December 2019 в 11:46
поделиться

Похоже, вам нужно указать путь к библиотеке ApacheCommons в свой CLASSPATH .

0
ответ дан 6 December 2019 в 11:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: