gpt4 book ai didi

java - ColdFusion ~ 类不能是接口(interface)(仅限 OSX)

转载 作者:行者123 更新时间:2023-11-30 08:51:23 25 4
gpt4 key购买 nike

我正在使用 Google API Java 客户端创建一个凭据对象。以下代码适用于 Windows,但在 OSX 10.10.3 (Yosemite) 上会引发错误。

<cfscript>
httpTransport = createObject("java", "com.google.api.client.http.javanet.NetHttpTransport").init();
jsonFactory = createObject("java","com.google.api.client.json.jackson2.JacksonFactory").init();
credential = createObject("java", "com.google.api.client.googleapis.auth.oauth2.GoogleCredential$Builder").init();
</cfscript>

我可以毫无问题地在某些类(NetHttpTransport、JacksonFactory 等)上调用 createObject,但是当我尝试实例化凭证生成器时,出现以下错误:

对象实例化异常。

实例化 Java 对象时发生异常。该类不能是接口(interface)或抽象类。错误:com/google/api/client/auth/oauth2/Credential$Builder。

java.lang.NoClassDefFoundError: com/google/api/client/auth/oauth2/Credential
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:637)
at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
...
at jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:203)
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
Caused by: java.lang.ClassNotFoundException: com.google.api.client.auth.oauth2.Credential
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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 60 more

我最终尝试在 ColdFusion 中重现的 java 代码是:

GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountPrivateKeyFromP12File(new File(KEY_FILE_LOCATION))
.setServiceAccountScopes(AnalyticsScopes.all())
.build();

Here's the full Stack Trace

最佳答案

直接访问可能适用于某些类而不适用于其他类,因为它不适用的那些可能期望帮助类位于 classPath 中。将 Google API Java 文件的位置路径添加到 jvm.config 文件(例如 jrun4/bin/jvm.config)并重新启动 CF 服务器可能会解决问题。

# JVM classpath
java.class.path={application.home}/servers/lib,{application.home}/servers/lib,{application.home}/servers/cfusion/cfusion-ear/cfusion-war/WEB-INF/cfusion/lib/oosdk/classes,{application.home}/servers/cfusion/cfusion-ear/cfusion-war/WEB-INF/cfusion/lib/oosdk/lib,{application.home}/lib

关于java - ColdFusion ~ 类不能是接口(interface)(仅限 OSX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30582612/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com