質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

1回答

1263閲覧

JavaでGoogle Sheets Apiを使用したときにコンパイル後に実行するとエラーが出る

Natsuri

総合スコア5

Google API

Googleは多種多様なAPIを提供していて、その多くはウェブ開発者向けのAPIです。それらのAPIは消費者に人気なGoogleのサービス(Google Maps, Google Earth, AdSense, Adwords, Google Apps,YouTube等)に基づいています。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2020/05/21 14:50

編集2020/05/22 13:28

JavaでGoogle Sheets apiを使用しているのですが、コンパイル前のIntelliJ Ideaで実行した場合エラーが起きずに実行できるのですが、コンパイル後にコマンドプロンプトで実行するとエラーが出てきます。
コードはこのサイトを参考にしています。
https://developers.google.com/sheets/api/quickstart/java

コード

public static void main(String[] args) { new SpreadSheets(); } public SpreadSheets() { try { sheets = getSheetsService(); } catch (Exception e) { e.printStackTrace(); } } private Credential authorize() throws Exception { InputStream inputStream = new FileInputStream(credentials); GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JacksonFactory.getDefaultInstance(), new InputStreamReader(inputStream)); List<String> scopes = Arrays.asList(SheetsScopes.SPREADSHEETS); GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(GoogleNetHttpTransport.newTrustedTransport(),JacksonFactory.getDefaultInstance(),clientSecrets,scopes) .setDataStoreFactory(new FileDataStoreFactory(new File("tokens"))) .setAccessType("offline") .build(); Credential credential = new AuthorizationCodeInstalledApp(flow,new LocalServerReceiver()) .authorize("user"); return credential; } private Sheets getSheetsService() throws Exception{ Credential credential = authorize(); return new Sheets.Builder(GoogleNetHttpTransport.newTrustedTransport(),JacksonFactory.getDefaultInstance(),credential) .setApplicationName(APPLICATION_NAME) .build(); }

ライブラリー
イメージ説明

エラーコード

Error: A JNI error has occurred, please check your installation and try again Exception in thread "main" java.lang.NoClassDefFoundError: com/google/api/client/json/JsonFactory at java.lang.Class.getDeclaredMethods0(Native Method) at java.lang.Class.privateGetDeclaredMethods(Unknown Source) at java.lang.Class.privateGetMethodRecursive(Unknown Source) at java.lang.Class.getMethod0(Unknown Source) at java.lang.Class.getMethod(Unknown Source) at sun.launcher.LauncherHelper.validateMainClass(Unknown Source) at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) Caused by: java.lang.ClassNotFoundException: com.google.api.client.json.JsonFactory at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) ... 7 more

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/05/21 19:35

実際のコードを提示されないと何とも言えません。 エラーに書いてあることで見えることもあるのでは。
Natsuri

2020/05/22 13:31

編集いたしました。 詳細などを記載したのでよろしくお願いします
退会済みユーザー

退会済みユーザー

2020/05/24 01:18

各種 jar の LOC header は正しいですか?
Natsuri

2020/05/24 02:09

LOC headerとはなんでしょうか.. どのように確認したらいいでしょうか IntelliJ ideaを使っています
guest

回答1

0

ベストアンサー

ClassNotFoundException: com.google.api.client.json.JsonFactory

とあるので、必要なライブラリが足りないのだと思います。
このキーワードで検索すれば対処方法は出てくると思います。

https://github.com/googleapis/google-http-java-client

にあるものを使えばよいと思います。


すでに認識していると思いますが、実行時のクラスパスに当該Jarを追加するように設定してください。
たぶん、IntelliJだと思いますが私は使っていないので設定方法はわかりません。
IntelliJ IDEAのアプリケーション実行プロファイルでクラスパスにディレクトリを追加する方法は?が、参考になるかもしれません。

バージョンもわかってないのでまったく設定方法ちがうかもしれませんし、普通に公式のサイトで設定方法のってるかもしれません。

投稿2020/05/21 20:30

編集2020/05/22 19:41
momon-ga

総合スコア4826

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Natsuri

2020/05/22 13:30

どのように何を足せばいいのか、何が足りていないのかいまいちわからず、教えていただけないでしょうか。 ライブラリや、コードを編集で追加したのでよろしくお願いします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問