【问题标题】:How to build Cling Android example with Eclipse如何使用 Eclipse 构建 Cling Android 示例
【发布时间】:2014-12-07 04:08:10
【问题描述】:

我在https://github.com/4thline/cling/tree/master/demo/android看过源码(其实我用的是Cling 2.0.1发行版自带的源码,是一样的)

但几周后尝试用我的 Eclipse 构建它,我没有成功

我在这里http://datababel.wordpress.com/2013/07/29/upnp-client-in-android-with-cling-getting-started/ 找到了一篇关于此的文章,但说明仍然不够清晰。

我想用 Mavenwith Eclipse 来简化必须要做的工作,但是在那篇文章中,他们似乎没有使用 Maven,而是直接使用了 jetty jar

谁能给我一个一步一步如何使用 Maven(源代码附带的 pom.xml 文件)使用 Eclipse 构建 Android 源代码?我的意思是:

1. Create android project
2. Convert to maven
3. Add something to pom.xml and everything works
4. etc.....something like that

我尝试在cling论坛的邮件列表上询问,但是论坛非常不活跃,并且论坛的所有者Chris Bauer不愿意回答与此相关的问题

非常感谢。任何帮助表示赞赏。

编辑 1:

我已经尝试了解决方案:打开.jar文件并删除每个.jar中的about.html,然后再次压缩它们。根据这篇文章http://www.gubatron.com/blog/2013/03/12/jar-dependencies-if-you-plan-to-use-the-cling-upnp-library-in-your-android-project/

,我在我的项目中包含了 8 个码头 .jar 文件
jetty-security-8.1.8.v20121106.jar
jetty-http-8.1.8.v20121106.jar
jetty-continuation-8.1.8.v20121106.jar
jetty-io-8.1.8.v20121106.jar
jetty-util-8.1.8.v20121106.jar
jetty-server-8.1.8.v20121106.jar
jetty-servlet-8.1.8.v20121106.jar
jetty-client-8.1.8.v20121106.jar

这是我在 Eclipse 中运行时的错误日志

[2014-12-07 12:07:20 - GR2] Dx 
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.cf.iface.ParseException: class name (org/eclipse/jetty/http/AbstractGenerator) does not match path (org.eclipse.jetty.http_8.1.8.v20121106/org/eclipse/jetty/http/AbstractGenerator.class)
    at com.android.dx.cf.direct.DirectClassFile.parse0(DirectClassFile.java:520)
    at com.android.dx.cf.direct.DirectClassFile.parse(DirectClassFile.java:406)
    at com.android.dx.cf.direct.DirectClassFile.parseToInterfacesIfNecessary(DirectClassFile.java:388)
    at com.android.dx.cf.direct.DirectClassFile.getMagic(DirectClassFile.java:251)
    at com.android.dx.command.dexer.Main.processClass(Main.java:665)
    at com.android.dx.command.dexer.Main.processFileBytes(Main.java:634)
    at com.android.dx.command.dexer.Main.access$600(Main.java:78)
    at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:572)
    at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:284)
    at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:166)
    at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:144)
    at com.android.dx.command.dexer.Main.processOne(Main.java:596)
    at com.android.dx.command.dexer.Main.processAllFiles(Main.java:498)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:264)
    at com.android.dx.command.dexer.Main.run(Main.java:230)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:483)
    at com.android.ide.eclipse.adt.internal.build.DexWrapper.run(DexWrapper.java:188)
    at com.android.ide.eclipse.adt.internal.build.BuildHelper.executeDx(BuildHelper.java:786)
    at com.android.ide.eclipse.adt.internal.build.builders.PostCompilerBuilder.build(PostCompilerBuilder.java:597)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:734)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:206)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:328)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:403)
    at org.eclipse.core.internal.resources.Project$1.run(Project.java:618)
    at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2313)
    at org.eclipse.core.internal.resources.Project.internalBuild(Project.java:597)
    at org.eclipse.core.internal.resources.Project.build(Project.java:124)
    at com.android.ide.eclipse.adt.internal.project.ProjectHelper.doFullIncrementalDebugBuild(ProjectHelper.java:1143)
    at com.android.ide.eclipse.adt.internal.launch.LaunchConfigDelegate.launch(LaunchConfigDelegate.java:155)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:885)
    at org.eclipse.debug.internal.core.LaunchConfiguration.launch(LaunchConfiguration.java:739)
    at org.eclipse.debug.internal.ui.DebugUIPlugin.buildAndLaunch(DebugUIPlugin.java:1039)
    at org.eclipse.debug.internal.ui.DebugUIPlugin$8.run(DebugUIPlugin.java:1256)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
...while parsing org.eclipse.jetty.http_8.1.8.v20121106/org/eclipse/jetty/http/AbstractGenerator.class

[2014-12-07 12:07:20 - GR2] Dx 1 error; aborting
[2014-12-07 12:07:20 - GR2] Conversion to Dalvik format failed with error 1

【问题讨论】:

  • @AlexK :谢谢你的建议,我已经遵循了。顺便说一句,你能帮我解决我的问题吗?我查看了您的个人资料,发现“我是一个狂热的 Java 程序员。我做了很多 Android 开发工作”。我认为您在这方面有足够的经验...谢谢!

标签: android cling android-cling


【解决方案1】:

我在构建项目时也遇到了类似的问题。您需要从您将其内容提取到的目录中制作 jar,而不是它的父目录。基本上本文的第 7 步 - https://datababel.wordpress.com/2013/07/29/upnp-client-in-android-with-cling-getting-started/ 需要从与第 4-6 步中使用的“jetty-server\8.1.8.android”目录相同的目录执行。

【讨论】:

    【解决方案2】:

    您可以将“servlet-api-3.0.jar”和“slf4j-jdk14-1.7.5.jar”添加到库中,然后重试。 我的应用基于 Android Studio 1.0.1 构建,运行良好。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多