2018年11月1日木曜日

VSCodeでJavaのWebアプリ開発

Tomcat for Java を使ってVSCode簡単なWebアプリを開発してみる。

GradleとTomcatがインストールされていることが前提となるので、インストールされていないようならインストールしておいてほしい。

Gradle : https://gradle.org/
Tomcat : https://tomcat.apache.org/download-90.cgi

何はともあれ、Tomcat for Javaをインストールする。


指示はでないのだけれど、一度VSCodeを再起動したほうがいい。私の環境では、ちゃんと動いてくれなかったのだ。

ソースの構成は下記の通り。

-+-src
|  +-main
|  |  +-java
|  |     +-com
|  |        +-hello
|  |           +-HelloController.java
|  +-webapp
|     +-hello.jsp
+-build.gradle

まずはgradleから作成する。

■build.gradle
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'war'

sourceSets {
    main {
        java {
            srcDir 'src'
        }
    }
}

repositories {
    mavenCentral()
}

dependencies {
    providedCompile 'javax.servlet:javax.servlet-api:3.0.1'
}

gradleを書き終えたらbuild.gradleのあるディレクトリでコマンドを実行。

gradle eclipse

.classpathや.projectといったファイルが作成される。eclipseを使うわけではないので必要ないと思うのだけれど、これをやらないと何故かコンパイルができなかったり、インテリセンスが動作しなかったりと上手くいかなかった。誰か原因を知っていたら教えてほしい。

src/main/java/com/hello/HelloController.javaを作成する。HelloController.javaを開くとVSCodeがなにやらしはじめる。

こんなメッセージが表示されるはずだ。


100%になると消えるのでそれまで待ったほうがよさそうな感じがする。数秒程度なので、これが終わったらHelloController.javaのコードを書いていく。

■HelloController.java
package com.hello;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.net.httpserver.HttpServer;

@WebServlet("/")
public class HelloController extends HttpServlet {

    private static final long serialVersionUID = 1L;

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws IOException, ServletException {
        getServletContext().getRequestDispatcher("/hello.jsp").include(request, response);
    }
}

次はsrc/main/webapp/hello.jsp。

■hello.jsp
<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <h1>Hello World</h1>
    </body>
</html>

ここまで出来たら、Gradleでビルドを実行する。

gradle build

ビルドが成功すると/build/libディレクトリにwarが出来上がる。


出来上がったwarを右クリックしてメニューを表示させ、Debug on Tomcat Serverを選択。


Tomcat Serverを選択するダイアログが表示されるので、+Add New Serverを選択し、Tomcatのインストールディレクトリを指定する。


このような表示が output ビューに表示されたら、Tomcatの起動に成功。

情報: Server startup in 1279 ms


ブラウザでアクセスするときちんと表示されることが分かる。
http://localhost:8080/TomcatForJavaDemo/


これでTomcat上でJavaのWebアプリを動作させることができた。

やってみて思ったのだが、やはりEclipseなどのIDEのほうが便利だということだ。あまり考えなくて済む。私のやり方が悪いのかVSCodeだと、インテリセンスがうまく動いてくれないことがあった。またデバッガが少し不安定のような気がしている。

下記のように20行目にブレイクポイントを置いてみて実際にデバッグしてみる。


すると、ぜんぜん関係ないところで止まってしまう。


本来止まって欲しい、ブレイクポイントを置いたところではどうやっても止まってくれない。今回、この問題を解消することができなかった。何かやり方に問題でもあるのだろうか。

VSCode自体は動作が軽くていいので、出来ればJavaの開発でも使いたい。しかし、デバッガがちゃんと動作させられないと、複雑なプログラムを作るのは難しい。どうしたものだろうか。

0 件のコメント:

コメントを投稿