【问题标题】:Mapping natively with Codename One in Eclipse在 Eclipse 中使用 Codename One 进行本机映射
【发布时间】:2016-02-19 16:26:13
【问题描述】:

我在 Eclipse 中使用 Codename Google Maps 插件。我将GoogleMaps.cn1lib 添加到我的库中并做了 Menu -> CodeNameOne -> Refresh Libs

代码如下:

    Form hi = new Form("Hi World");
    hi.addComponent(new Label("Hi World"));
    MapContainer googleMap = new MapContainer();
    hi.add(googleMap);
    hi.show();

我已经编辑了属性文件并按照说明添加了道具(在需要的地方替换 API 密钥)

我已生成 Google API 密钥,并在运行模拟器时出现以下异常。该应用无法打开街道地图。

在我的lib/impl/native/android 中,我可以在InternalNativeMapsImp.java 中看到Android 的源代码。

java.lang.ClassNotFoundException: com.codename1.googlemaps.InternalNativeMapsImpl
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.findSystemClass(ClassLoader.java:1001)
at com.codename1.impl.javase.ClassPathLoader.findClass(ClassPathLoader.java:100)
at com.codename1.impl.javase.ClassPathLoader.loadClass(ClassPathLoader.java:50)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at com.codename1.system.NativeLookup.create(NativeLookup.java:61)
at com.codename1.googlemaps.MapContainer.<init>(MapContainer.java:116)
at com.codename1.googlemaps.MapContainer.<init>(MapContainer.java:81)

我已经从 Eclipse/Net Beans 更改了 IDE - 同样的事情

在 iOS 上 构建失败 出于同样的原因,就在我的堆栈跟踪之前:

执行:javac -classpath /var/folders/p7/xxx/classes -d /var/folders/p7/xxx/seVer /var/folders/p7/xxx/stub/com/codename1/googlemaps/InternalNativeMapsImplCodenameOne.java /var/folders/p7/xxx/stub/com/codename1/googlemaps/InternalNativeMapsStub.java /var/folders/p7/xxx/stub/GooglrMapsStub.java 注意:一些输入文件使用或覆盖已弃用的 API。 注意:使用 -Xlint:deprecation 重新编译以获取详细信息。

如何添加 MapContainer 的源码进行调试?

【问题讨论】:

  • 这不是真正的错误。您可能得到了错误的构建提示之一。错误在日志中更靠后。
  • 我只是复制/粘贴了指示的构建提示。在底部有一个链接错误:** BUILD FAILED ** 以下构建命令失败:Ld build/GooglrMaps.build/Release-iphoneos/GooglrMaps.build/Objects-normal/arm64/GooglrMaps normal arm64 Ld build/GooglrMaps。 build/Release-iphoneos/GooglrMaps.build/Objects-normal/armv7/GooglrMaps normal armv7(2次失败)
  • 这也不是错误。就在这两者之间。我几乎可以保证问题在于缺少或复制错误的构建提示。在构建提示 GUI 中验证它们是否正确。
  • 知道了。我将文章中的属性直接复制/粘贴到属性文件中,而不是添加它们。现在构建完成了,但没有地图,只有谷歌徽标,有什么提示吗?
  • 您需要修复密钥并在谷歌云控制台中启用谷歌相关选项。

标签: java eclipse google-maps codenameone


【解决方案1】:

Google/Native Maps 目前在真实设备上可用,而不是在模拟器上。

显示 openstreetmap 是默认且正确的行为,但不应抛出异常。你是如何创建地图的?简单而正确的方法是:

MapContainer googleMap = new MapContainer();
f.add(BorderLayout.CENTER, googleMap);

【讨论】:

  • 非常感谢@Diamond - 我的代码看起来一样。我的 IOS 构建失败,所以我无法在 Android 上检查 IOS - 代码无法打开街道地图。下面是构建错误快照:/var/folders/p7//stub/com/codename1/googlemaps/InternalNativeMapsImplCodenameOne.java /var//T//stub/com/codename1/googlemaps/InternalNativeMapsStub.java 注意:一些输入文件使用或覆盖已弃用的 API。注意:使用 -Xlint:deprecation 重新编译以获取详细信息。 java.lang.ClassNotFoundException: com.codename1.googlemaps.InternalNativeMapsImpl at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
  • 你是否从属性中更新了库> 更新项目库
猜你喜欢
  • 2016-04-24
  • 2013-12-13
  • 1970-01-01
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多