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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Java

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

Q&A

解決済

1回答

2878閲覧

パッケージが見つからないと表示

cola

総合スコア26

Java

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

0グッド

0クリップ

投稿2017/09/10 13:42

パッケージjavax.servletは存在しませんと表示されます。
どのようにすればいいのでしょうか?
回答お願いします
環境変数、エラー内容は下記のとおりです。

CLASSPATH
C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib\servlet-api.jar;C:\Program Files (x86)\Java\jre6\lib\ext\QTJava.zip;C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib

JAVA-HOME
C:\Program Files\Java\jdk1.8.0_111

path
%JAVA_HOME%\bin;C:\ProgramData\Oracle\Java\javapath;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files (x86)\Common Files\Microsoft Shared\Windows Live;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0;C:\Program Files (x86)\Windows Live\Shared;;C:\Program Files\Intel\WiFi\bin;C:\Program Files\Common Files\Intel\WirelessCommon;c:\Program Files (x86)\Common Files\Ulead Systems\MPEG;C:\Program Files (x86)\Common Files\Roxio Shared\DLLShared;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\DLLShared;C:\Program Files (x86)\Common Files\Roxio Shared\OEM\12.0\DLLShared;C:\Program Files (x86)\Roxio 2010\OEM\AudioCore;C:\Program Files (x86)\Common Files\NEC\SmartVision;C:\Program Files\Common Files\NEC\SmartVision;C:\Program Files (x86)\QuickTime\QTSystem;C:\Program Files\Microsoft\Web Platform Installer;C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET Web Pages\v1.0;C:\Program Files\Microsoft SQL Server\110\Tools\Binn;C:\Program Files (x86)\Skype\Phone\

エラー内容

C:\Program Files\Apache Software Foundation\Tomcat 9.0\temp>javac Hello.java
Hello.java:2: エラー: パッケージjavax.servletは存在しません
import javax.servlet.;
^
Hello.java:3: エラー: パッケージjavax.servlet.httpは存在しません
import javax.servlet.http.
;
^
Hello.java:5: エラー: シンボルを見つけられません
public class Hello extends HttpServlet {
^
シンボル: クラス HttpServlet
Hello.java:7: エラー: シンボルを見つけられません
public void doGet(HttpServletRequest request, HttpServletResponse response)
^
シンボル: クラス HttpServletRequest
場所: クラス Hello
Hello.java:7: エラー: シンボルを見つけられません
public void doGet(HttpServletRequest request, HttpServletResponse response)
^
シンボル: クラス HttpServletResponse
場所: クラス Hello
Hello.java:8: エラー: シンボルを見つけられません
throws IOException, ServletException{
^
シンボル: クラス ServletException
場所: クラス Hello
エラー6個

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

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

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

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

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

guest

回答1

0

ベストアンサー

なんかいろいろツッコミどころがあるのですが、

まずTomcat 9.0ってまだ評価版じゃないんですか?少なくとも初心者が使う代物ではないでしょう。8.0ないし8.5を選ぶべきのような。

C:\Program Files\Apache Software Foundation\Tomcat 9.0\temp>javac Hello.java

なぜそんなところで作業しているのですか?WindowsではProgram Filesの下は一般ユーザーが自由にアクセスできないような権限になっています。Tomcatをインストーラーで導入した場合も同様のはずですが、アクセス権を強引に変えて作業しているのでしょうか?

C:\Program Files\Java\jdk1.8.0_111

なんか中途半端に古いですね。今日現在の最新はjdk1.8.0_144ですが、書籍か何かに付属していたものを入れたのでしょうか?

CLASSPATH

本質的な原因はクラスパス絡みの設定ミスしか考えられません。以前の質問でも何か理解がおぼつかないところがあったようですが。まだ何か理解不足があるのではないでしょうか?

まずとりあえず確認のために、ソースをユーザーが作業用に使って問題のない場所、例えば"C:\Users<ユーザー名>\work"みたいなフォルダーを作ってその中に移し、

C:\Users\<ユーザー名>\work>javac -cp "C:\Program Files\Apache Software Foundation\Tomcat 9.0\lib\servlet-api.jar" Hello.java

のように-cpオプションでクラスパスを設定しても通らないでしょうか?

投稿2017/09/10 14:44

編集2017/09/10 15:06
keicha_hrs

総合スコア6768

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

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

cola

2017/09/10 15:07

書かれていた通り実行してみましたが javac: Files\Apacheは無効なフラグです 使用方法: javac <options> <source files> と表示されました。
keicha_hrs

2017/09/10 15:09

""で囲みましたか?ここでの指定は囲まないと正常動作しません。
cola

2017/09/10 15:12

囲んだらできました! なぜ囲まなければエラーになるのでしょうか? 質問事項以外にも指摘ありがとうございます。 勉強していきたいと思います
keicha_hrs

2017/09/10 15:26

コマンドで指定した場合、空白文字が含まれるパスは""で囲まないと、コマンドがどこまでがパスの指定なのか判別できないからです。環境変数CLASSPATHで設定した場合は囲む必要はありません。ただ、環境変数CLASSPATHを固定的に設定すると、「アプリごとに異なったクラスパスを指定したい」という開発に非常に都合が悪いので、あまり推奨はされていません。この例のようにjavacコマンドのオプションとして指定するか、あるいはバッチファイルやビルドツールを使ってCLASSPATHを一時的に設定するか、どちらかが望ましいと思います。
cola

2017/09/10 16:44

なるほど。 説明ありがとうございます。 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問