質問するログイン新規登録

Q&A

解決済

1回答

500閲覧

Eclipseでsoapapi を使ったプログラムでmain がエラーになる。

todasan

総合スコア98

Java

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

SOAP

SOAP(Simple Object Access Protocol)はウェブサービス実装においての構造化された情報をやり取りするためのプロトコル規定です。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

0グッド

0クリップ

投稿2025/10/29 01:18

編集2025/10/29 05:54

0

0

実現したいこと

javaをeclipseの環境で動作させています。以下のコードについて、エラーが発生します。

・soap_api_login

java

1import javax.xml.soap.MessageFactory; 2import javax.xml.soap.SOAPBody; 3import javax.xml.soap.SOAPConnection; 4import javax.xml.soap.SOAPConnectionFactory; 5import javax.xml.soap.SOAPElement; 6import javax.xml.soap.SOAPEnvelope; 7import javax.xml.soap.SOAPMessage; 8import javax.xml.soap.SOAPPart; 9 10public class soap_api_login { 11 private static final String GAROON_URL = "aaaaaaaaaaaaaaaa"; 12 private static final String USERNAME = "bbbbb"; 13 private static final String PASSWORD = "ccccc"; 14 15 public static void main(String[] args) { 16 try { 17 SOAPConnectionFactory soapConnectionFactory = SOAPConnectionFactory.newInstance(); 18 SOAPConnection soapConnection = soapConnectionFactory.createConnection(); 19 20 // リクエスト送信 21 SOAPMessage request = createSOAPRequest(); 22 SOAPMessage response = soapConnection.call(request, GAROON_URL); 23 24 System.out.println("=== Response ==="); 25 response.writeTo(System.out); 26 System.out.println(); 27 28 soapConnection.close(); 29 } catch (Exception e) { 30 e.printStackTrace(); 31 } 32 } 33 34 private static SOAPMessage createSOAPRequest() throws Exception { 35 MessageFactory messageFactory = MessageFactory.newInstance(); 36 SOAPMessage soapMessage = messageFactory.createMessage(); 37 SOAPPart soapPart = soapMessage.getSOAPPart(); 38 39 String serverURI = "http://wsdl.cybozu.co.jp/base/2008"; 40 41 // SOAP Envelope 42 SOAPEnvelope envelope = soapPart.getEnvelope(); 43 envelope.addNamespaceDeclaration("base", serverURI); 44 45 // SOAP Body 46 SOAPBody soapBody = envelope.getBody(); 47 SOAPElement auth = soapBody.addChildElement("BaseAuthenticate", "base"); 48 SOAPElement login = auth.addChildElement("login_name"); 49 login.addTextNode(USERNAME); 50 SOAPElement password = auth.addChildElement("password"); 51 password.addTextNode(PASSWORD); 52 53 soapMessage.saveChanges(); 54 55 System.out.println("Request:"); 56 soapMessage.writeTo(System.out); 57 System.out.println(); 58 59 return soapMessage; 60 } 61}

エラーは以下のエラーです。
Exception in thread "main" java.lang.Error: Unresolved compilation problem:

at baroon_test_aoap_api.soap_api_login.main(soap_api_login.java:15)

プロンプトで実行すると、javax.xml.soapが存在しないと出ます。
C:\Users\takeshi_matuda\src_code_result\otameshi_jisshi_java\baroon_test_aoap_api\src\baroon_test_aoap_api>javac soap_api_login.java
soap_api_login.java:1: エラー: パッケージjavax.xml.soapは存在しません
import javax.xml.soap.MessageFactory;

イメージ説明

java7の環境でビルド、ライブラリーの設定もjava7にしています。java7ならjavax.xml.soapが
あるはずですが、以上のようなエラーが出ます。ハローワールドのようなプログラムを
実行ができています。何か解決方法が分かれば、お聞きしてもよろしいですか。

発生している問題・分からないこと

質問に詳細を記載した。

該当のソースコード

特になし

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

質問に詳細を記載した。

補足

特になし

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

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

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

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

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

jimbe

2025/10/29 01:50

他のご質問でもそうですが、「~について」というタイトルでは一覧で質問の内容が分かりません。 一覧で見ても内容が分かるような、例えば「Eclipse で soapapi を使ったプログラムで main がエラーになる」というくらい質問内容が分かるように書いて頂けると助かります。 3-1. タイトルには要件を書きましょう https://teratail.com/help/question-tips#questionTips31 そして、本件には状況が異なる二つ(Eclipse とプロンプト)がありますが、何方が本題なのでしょうか。
todasan

2025/10/29 02:26

jimbe さん Eclipseの方が本題です。プロンプトの方は環境変数をjava7の実行ファイルに指定後に、 上記のエラーはなくなりました。
jimbe

2025/10/29 04:39

編集ありがとうございます。 プロンプトのほうは本題で無くかつ解決されてましたら、打ち消し線のマークダウン "~~" で囲って打ち消しておいたほうが良いかもしれません。 Eclipse のほうですが、コードをコピペして javax.xml.soap-api-1.4.0.jar を Maven から取ってきてコンパイルしてみましたが、エラーにはなりませんでした。(実行すると他のモノが足りないとのエラーになりましたが。) 何か他に違いがあるのかもしれません。エラーが発生している状態の Eclipse のスクリーンショットを載せて頂けますでしょうか。
todasan

2025/10/29 05:52

jimbe さん 上記の対応を行いました。
jimbe

2025/10/29 07:27

編集ありがとうございます。 コードが異なっていますが…問題を放置したまま開発を進めるのは止めた方が良いと思います。 (他人にだけ調査させているように思われれば、回答が付き難くなります。) 最初の import の "i" に赤線があってエラーを報告していますが、その内容は何でしょう。 他に、行番号の左側にマークが付いている行はありますか? このソースファイルを Eclipse 以外のエディタで編集・保存したことはありますか?
melian

2025/10/29 07:59 編集

> 最初の import の "i" に赤線があってエラーを報告していますが、 ファイルの先頭であることから、UTF-8のBOM(Byte Order Mark)ではないでしょうか。
todasan

2025/10/29 08:03

jimbe さん すみません。vscodeで環境を作成して、import javax.xml.soapを使わず、 別のものを使用したらうまくできました。 よって、一旦、クローズします。
jimbe

2025/10/31 17:28

>UTF-8のBOM(Byte Order Mark)では それを懸念して >このソースファイルを Eclipse 以外のエディタで編集・保存したことはありますか? と書いたのですが、 Eclipse は BOM に対応しているはずですし、コンパイルエラーなら違うメッセージになるはずなので、違うだろうなぁと思ってました。 todasan 自身の回答へのコメントで YT0014 さんの「package が無い」というのを見て、(確認していませんが)それっぽいと思った所です。
todasan

2025/10/31 23:27

jimbe さん 別のhttpリクエストのパッケージでは動きました。話は変わりますが、javaではsoapapiのログイン、 soapapiのデータ取得が2種類まで実装ができました。 javaについてはどれくらいで、ファイルを分けるのですが。soapapiのログイン、 soapapiのデータ取得が2種類は同一のファイルなのか、ファイルを分けた方がいいですか。
jimbe

2025/11/01 03:44

>別のhttpリクエストのパッケージでは動きました いえ、 YT0014 さんも書かれていますが「package が無い」というのは、 soap 等のパッケージがインストールされていないということでは無くて、 todasan の書かれた soap_api_login.java ファイルの最初に「package 文が無い」ということです。 >話は変わりますが、(略 この欄は「質問へのコメント」で、回答者が質問者に質問したり、それを受けて質問者が回答したりするところです。 「ファイルの分割はどうするのが良いか」という質問は。本件の主である「エラーを解消したい」とは全く関係無いことですね。 別にQ&Aや意見交換を作ったほうが良いかと思います。
guest

回答1

0

自己解決

vscodeで環境を作成して、import javax.xml.soapを使わず、java7を環境変数に
指定したら、開発が進める事ができたので、解決にします。

投稿2025/10/29 08:04

todasan

総合スコア98

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

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

YT0014

2025/10/29 12:32

Eclipseでも、同様に、java7でのコンパイルを指定すれば良いのでは?
todasan

2025/10/29 22:51

YT0014 さん java7でビルド、コンパイル、ライブラリの指定をしてもなぜかできませんでした。
YT0014

2025/10/29 23:29

>java7でビルド、コンパイル、ライブラリの指定 これは、環境変数に設定したのと同一の環境ですか? Eclipseの場合、内部の専用環境がデフォルトですが
YT0014

2025/10/29 23:35

あぁ、packageがないから、エラーになっている可能性があるのか
todasan

2025/10/31 02:03

packageは確認して、ありましたが、なぜかできなかったです。
YT0014

2025/10/31 10:07

意味が違います ソースコードにpackage宣言がないために、エラーを起こしているのでは、ということです エラーメッセージにも、baroon_test_aoap_api.soap_api_login とあるように、ソースコードが置かれている場所から、baroon_test_aoap_api パッケージの下に soap_api_login クラスが存在していると解釈されています なので、先頭行に、以下を足してみて下さい package baroon_test_aoap_api;
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.29%

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

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

質問する

関連した質問