当前位置: 首页 > 知识库问答 >
问题:

Grizzly HTTP Server (Jersey) 中集成 ArcGIS Runtime SDK for Java 时出现错误

丁雅惠
2023-03-14

我按照这里的指南从Maven Archetype创建了一个新泽西HTTP服务器。一切都很好,资源按预期返回字符串,这是资源:

package com.example;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

@Path("myresource")
    public class MyResource {

    @GET
    @Produces(MediaType.TEXT_PLAIN)
    public String getIt() {         

        return "Hello from my Server";
}
}

我按照这里的指南使用下载的ArcGIS运行时SDK。我创建了以下简单的Java类来确定点是否在几何体(圆、矩形、多边形等)中:

package geoC;
import com.esri.arcgisruntime.geometry.Geometry;
import com.esri.arcgisruntime.geometry.GeometryEngine;
import com.esri.arcgisruntime.geometry.Point;
import com.esri.arcgisruntime.geometry.SpatialReferences;

public class checkInside {

public static void main(String[] args) {

    Point pt = new Point( -0.04473405456542423, 39.98776978688296, SpatialReferences.getWgs84());       

    String rectangleJson = "{\"xmin\":-0.05225854142896743,\"ymin\":39.98251082423102,\"xmax\":-0.02856927140946811,\"ymax\":39.993164240959295,\"spatialReference\":{\"wkid\":4326}}";
    Geometry rectangle = (Geometry) Geometry.fromJson(rectangleJson);       

    //check if the point is inside the rectangle or not
    boolean decision = GeometryEngine.contains( rectangle, pt );            
    System.out.println(decision);
    }
}

此类工作正常,根据位置输入生成“true”或“false”。

当我试图合并第一段和第二段代码时,问题出现了,我将第二段代码的内容放在了第一段代码中:

package com.example;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;
import com.esri.arcgisruntime.geometry.Geometry;
import com.esri.arcgisruntime.geometry.GeometryEngine;
import com.esri.arcgisruntime.geometry.Point;
import com.esri.arcgisruntime.geometry.SpatialReferences;

@Path("myresource")
public class MyResource {

@GET
@Produces(MediaType.TEXT_PLAIN)
public String getIt() {  

    Point pt = new Point( -0.04473405456542423, 39.98776978688296, SpatialReferences.getWgs84());       

    String rectangleJson = "{\"xmin\":-0.05225854142896743,\"ymin\":39.98251082423102,\"xmax\":-0.02856927140946811,\"ymax\":39.993164240959295,\"spatialReference\":{\"wkid\":4326}}";
    Geometry rectangle = (Geometry) Geometry.fromJson(rectangleJson);       

    boolean decision = GeometryEngine.contains( rectangle, pt );        
    System.out.println(decision);

    return "Hello from my Server";
}
}

mvn 编译---

mvn exec:java---

错误是:未能在TestArcGISJersey项目上执行目标org.codehaus.mojo:exec maven插件:1.2.1:java(默认cli):执行java类时发生异常。null:InvocationTargetException:com/esri/arcgisruntime/geometry/Geometric:com.esri.arcgisruntime.geometry。几何学-

此外,如果我注释了这两行(boolean decision=…System.out.println(…),则mvn exec:java成功执行,但当我向资源发送GET请求时,请求失败,而不是获得预期的字符串。

有人在这里有什么想法吗?谢谢。

共有2个答案

明松
2023-03-14

ArcGIS Runtime SDK for Java 不适合作为在服务器环境中使用的 API。虽然某些 API 可能有效,但不支持此用例。该 API 不是为在服务器容器中使用而设计的。

但是,对于您描述的用例,您可能需要查看此处的JavaGeometry API开源项目:https://github.com/Esri/geometry-api-java.

尽管如此,在陈述了这一现实之后,我确实觉得很自然地认为这将是服务器开发的可行解决方案。太好了!

毋宏茂
2023-03-14

似乎您尚未获得任何许可,请记住,所有 ArcGIS 产品都需要拥有许可,无论您是否付费都无关紧要。

我建议您按照ArcGIS Developers(JAVA 100.0.0的ArcGIS运行时)“许可您的应用程序”的以下步骤进行操作

在这里,您可以看到您需要这样一行:

https://developers.arcgis.com/java/latest/guide/license-your-app.htm

    // license with a license key
ArcGISRuntimeEnvironment.setLicense("runtimelite,1000,rud#########,day-month-year,####################");

我不确定在Maven Archetype的泽西HTTP服务器上使用ArcGIS运行时。您将需要额外的测试并始终查看服务器日志

 类似资料:
  • 登录后,它生成了一个哈希值,但仍然给出错误“Some problem currened!try tain”。

  • 我试图将payUMoney集成到Node.js中,但我得到一个错误,作为 这里显示缺少参数furl,但我提供了这一点。我的代码如下:

  • 我有一个使用泽西岛-1 的 JAX-RS 网络服务。目前只有一种方法,可以发送带有附件的邮件。附件必须作为多部分表单数据提供。 这种方法很有效。但是当我尝试集成swagger时,我总是会出现以下错误: 严重:缺少方法public javax.ws.rs.core的依赖项。响应…在索引8处的参数处抛出java.lang.Exception(参数9、10和11也会抛出此错误) 结合使用 SEVERE:

  • 基本上我是按照这个指示做的:http://thecodeship.com/deployment/deploy-django-apache-virtualenv-and-mod_wsgi/ 但结果是: 尚未找到任何服务器 请求方法:获取请求URL:http://52.25.226.143/admin/ Django版本:1.5.11异常类型:ServerSelectionTimeoutError异常

  • 试图调用不存在的方法。尝试是从以下位置进行的: 以下方法不存在: 该方法的类javax.el.elutil可从以下位置获得:

  • 我已经核实了Payumoney的帐户。当点击沙箱模式下的paynow按钮时,它会显示“发生了一些错误”。我使用了pnp SDK。 此代码用于onclick on paynow按钮。 这是哈希计算函数 执行流程: 用户在选择“在线支付”作为方法后,单击“paynow”按钮。 执行LaunchPayumOneyFlow()函数 所有附加到PayumOneYSDKInitializer.PaymentP