Я создаю объект учетных данных с помощью Google API Java Client. Следующий код работает в Windows, но вызывает ошибку в OSX 10.10.3 (Yosemite).ColdFusion ~ Class не должен быть интерфейсом (только для OSX)
<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>
Я могу назвать CREATEOBJECT на некоторых из классов без каких-либо проблем (NetHttpTransport, JacksonFactory и т.д.), но когда я пытаюсь создать экземпляр удостоверения Builder, я получаю следующее сообщение об ошибке:
Исключение экземпляра объекта.
Исключение произошло при создании объекта Java. Класс не должен быть интерфейсом или абстрактным классом. Ошибка: 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
Java-код, который я в конечном счете пытается воспроизвести в ColdFusion является:
GoogleCredential credential = new GoogleCredential.Builder()
.setTransport(httpTransport)
.setJsonFactory(JSON_FACTORY)
.setServiceAccountId(SERVICE_ACCOUNT_EMAIL)
.setServiceAccountPrivateKeyFromP12File(new File(KEY_FILE_LOCATION))
.setServiceAccountScopes(AnalyticsScopes.all())
.build();
Это сообщение об ошибке плиты котла для объектов java. Можете ли вы опубликовать полную трассировку стека? – Leigh
Спасибо. След говорит, что один из необходимых классов отсутствует или недоступен: 'Caused by: java.lang.ClassNotFoundException: com.google.api.client.auth.oauth2.Credential'. Убедитесь, что вы добавили банку, содержащую этот класс, в путь класса CF - или для CF10 + [путь библиотеки приложений] (http://help.adobe.com/en_US/ColdFusion/10.0/Developing/WSe61e35da8d318518-106e125d1353e804331-7ffd.html). – Leigh