java - Grails 2.x 和 Google Cloud Vision API“java”错误
问题描述
我正在使用 Google Cloud Vision API 进行一些 OCR 测试。https://cloud.google.com/vision/docs/ocr#vision_text_detection-java建议的代码工作正常。但是我需要更新一个旧的 Grails 2.5.6 应用程序来实现 OCR,我尝试使用相同的代码进行相同的测试,但产生了以下错误:
Error |
java.io.IOException: Cannot run program "java" (in directory "/home/manuel/IdeaProjects/googleVisionTest"): error=2, No such file or directory
Error |
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
Error |
at org.codehaus.groovy.grails.cli.fork.ForkedGrailsProcess.fork(ForkedGrailsProcess.groovy:309)
Error |
at org.grails.plugins.tomcat.fork.ForkedTomcatServer.fork(ForkedTomcatServer.groovy)
Error |
at org.codehaus.groovy.grails.cli.fork.ForkedGrailsProcess.fork(ForkedGrailsProcess.groovy:264)
Error |
at org.grails.plugins.tomcat.fork.ForkedTomcatServer.fork(ForkedTomcatServer.groovy)
Error |
at org.grails.plugins.tomcat.fork.ForkedTomcatServer$_startSecure_closure6.doCall(ForkedTomcatServer.groovy:171)
Error |
at org.grails.plugins.tomcat.fork.ForkedTomcatServer$_startSecure_closure6.call(ForkedTomcatServer.groovy)
Error |
at groovy.lang.Closure.run(Closure.java:495)
Error |
at org.grails.plugins.tomcat.fork.ForkedTomcatServer$_startSecure_closure6.run(ForkedTomcatServer.groovy)
Error |
at java.lang.Thread.run(Thread.java:748)
Error |
Caused by: java.io.IOException: error=2, No such file or directory
Error |
at java.lang.UNIXProcess.forkAndExec(Native Method)
Error |
at java.lang.UNIXProcess.<init>(UNIXProcess.java:247)
Error |
at java.lang.ProcessImpl.start(ProcessImpl.java:134)
Error |
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
Error |
... 9 more
仅出于测试目的,我在 Bootstrap.groovy 中编写了建议的代码,如下所示:
import com.google.cloud.vision.v1.AnnotateImageRequest
import com.google.cloud.vision.v1.AnnotateImageResponse
import com.google.cloud.vision.v1.BatchAnnotateImagesResponse
import com.google.cloud.vision.v1.EntityAnnotation
import com.google.cloud.vision.v1.Feature
import com.google.cloud.vision.v1.Image
import com.google.cloud.vision.v1.ImageAnnotatorClient
import com.google.protobuf.ByteString
class BootStrap {
def init = { servletContext ->
def realPath = servletContext.getRealPath("/reports/images/")
def fileName = "${realPath}/1.png"
detectText(fileName)
}
def destroy = {
}
def detectText(String filePath) throws IOException {
List<AnnotateImageRequest> requests = new ArrayList<>();
ByteString imgBytes = ByteString.readFrom(new FileInputStream(filePath));
Image img = Image.newBuilder().setContent(imgBytes).build();
Feature feat = Feature.newBuilder().setType(Feature.Type.TEXT_DETECTION).build();
AnnotateImageRequest request =
AnnotateImageRequest.newBuilder().addFeatures(feat).setImage(img).build();
requests.add(request);
ImageAnnotatorClient client = ImageAnnotatorClient.create()
BatchAnnotateImagesResponse response = client.batchAnnotateImages(requests);
List<AnnotateImageResponse> responses = response.getResponsesList();
for (AnnotateImageResponse res : responses) {
if (res.hasError()) {
System.out.format("Error: %s%n", res.getError().getMessage());
return;
}
for (EntityAnnotation annotation : res.getTextAnnotationsList()) {
System.out.format("Text: %s%n", annotation.getDescription());
System.out.format("Position : %s%n", annotation.getBoundingPoly());
}
}
}
}
我该如何解决这个问题?提前致谢。
解决方案
推荐阅读
- css - 我无法让我的样式表加载到 github 中,(下面的链接)
- javascript - 我如何挂钩 js 函数,防止在 if 语句上执行动作并继续函数流
- c++ - 我的应用程序中可以有多个 QDialog 框和我的 MainWindow 吗?
- java - 百分比和计算利息有问题
- node.js - 使用 firebase 云函数记录 firebase 分析事件
- docker - 如何使用 docker-compose 查看所有部署
- python - 如何用它们的键替换列中的 dict?
- git - 如何将 .bundle 文件添加到 GitHub 的存储库中?
- c# - 试图在 C# 测试中比较两个列表
- ios - Swift - 如何手动在屏幕外预加载 UITableViewCells?