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

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

ただいまの
回答率

87.80%

VBA上で起動した場合のみ、POIを利用したJava(jarファイル)がエラーを返す

受付中

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 3,882

score 11

POIライブラリを利用して、エクセルファイルを読み込んである処理を行うコードをJavaで作成しました。

JavaIDE上での正常動作を確認してJarへビルドし、
VBA上でShell.Run (%COMSPEC%)を使いJarを起動したところ、WorkbookFactoryにてオブジェクトをとった際にエラーを返しました。

FileInputStream fs = new FileInputStream("file.xls")
//ここでダイアログを表示させて通過を確認しています。
Workbook wb = new WorkbookFactory(fs)
//ここを通らずエラー落ちします。


どのようなエラーを返しているかは特定できていません。
try,chatchでマルチキャッチを記述するとそもそもJar自体が起動せずJNIエラーを返します。

IDE上では正しく動作する物が、VBA(Shell)上では挙動が変わるということはあるのでしょうか?

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

0

「クラスパス」ってキチンと通してありますか?
JavaIDEは、具体的に何をご使用になられているか分かりませんが、アプリの起動に必要な最低限のクラスパスを、ご親切にも予め設定してくれているのですが、コマンドプロンプトから実行する場合には逐一自分で設定する必要があります。
ココ の「[ 1 ] クラスパスの設定 - コマンド編 -」という節を参考に、再確認してみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/08/28 21:43

    ご回答ありがとうございます。
    ですが、ご存知の通りJar自体の起動はできています。
    POIを利用しないJarは問題なく使用できます。
    今回の質問は、VBA(Shell)を経由した場合のみworkbookのオブジェクトをとる時にエラーが出ている件についての回答を求めています。
    クラスパスを通すことでPOIの挙動が変わる理由があれば追加でご教授ください。

    キャンセル

  • 2015/08/28 22:01

    POIを利用しているのにPOIのクラスにクラスパスが通っていないと、
    jar起動のタイミングではなく、POIのクラスを参照したタイミングで、
    NoClassDefFoundErrorが発生します。
    という前提でpi-chanさんは書いていると思います。

    試しに、コマンドプロンプトから、VBAで実行しているコマンドを
    実行するとどうなるでしょうか?

    キャンセル

  • 2015/08/28 23:47

    eripongさん、的確な補足説明をありがとうございます!

    rancetさん、「コマンドプロンプトから、VBAで実行しているコマンドを実行する」というのは、極めて有用なデバッグ方法です!!(自分は常に実践しています)
    この時、Runメソッドに「実際に渡される」文字列を、MsgBoxやDebug.Printで実際に表示させ、それを「コピペ」して実行してみる、というのがポイントです!

    キャンセル

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

  • ただいまの回答率 87.80%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る