20201016のJavaに関する記事は4件です。

Eclipse実行時のエラーメッセージを翻訳してみた(Java)

Eclipse実行時のエラーを翻訳してみました

エラー原因

org.springframework.beans.factory.BeanCreationException
RequestMappingの値が重複したときに起きるエラー

エラー詳細の翻訳

encountered during context initialization
コンテキストの初期化中に発生しました

cancelling refresh attempt
更新の試行をキャンセルする

Error creating bean with name
名前のあるBeanの作成中にエラーが発生しました

Error creating bean with name
名前のあるBeanの作成中にエラーが発生しました

defined in class path resource
クラスパスリソースで定義

Invocation of init method failed
initメソッドの呼び出しに失敗しました

Ambiguous mapping.
あいまいなマッピング。

Cannot map 'memberRestController' method
'memberRestController'メソッドをマップできません

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

VSCodeでJavaの開発環境構築をする

学部の授業でJavaを用いたオブジェクト指向入門をしたものの,「だいぶ前のことで忘れてしまった...」ということで,復習がてら再入門していきます.

開発環境構築

Javaは2年前くらいに学部の授業で利用していましたが,PCを新しくしてから初めて利用するため,開発環境構築からしなくてはなりません.
統合開発環境としてはEclipseが有名で講義でも利用していました.しかし,利用頻度の小さいJavaのために新しくインストールしたくなかったため,VSCodeを利用して環境構築しました.

環境構築は,こちらを参考に行いました.以下はリンク先に書かれている,環境構築の概略です.

JDK(Java SE Development Kit)のインストール

もし,JDKをインストールしていなかったら以下からダウンロードする必要があります.

VSCode for JavaではJava SE 11以上のバージョンで利用できるようなので,上のリンク先から最新のJDKをダウンロードすれば良いでしょう.

次のステップでパスの設定を行うので,インストールした際にパスをメモっておくことをお忘れなく.

java.homeの設定

今回はVSCodeだけでJavaが使えればいいので,VSCodeのjava.homeを設定すれば十分です.
設定手順は以下の通りです:

  1. VSCodeの設定画面を開く(Ctrl+,
  2. 検索ボックスに"java.home"と入力 image.png
  3. Edit in settings.jsonをクリックして,java.homeにインストールしたJDKのパスを記入
設定するパスの例
{
...,
"java.home": C:\\Program Files\\Java\\jdk-13.0.2,
}

Java Extension Packのインストール

続いて,Java開発で有名な複数のVSCode拡張機能を一気にインストールします.
手順は以下の通りです:

  1. 拡張機能の画面を開く(Ctrl+Shift+X
  2. 検索ボックスに"java"と入力 image.png

これで,一番上に"Java Extension Pack"が現れると思います.Installボタンを押して少し待てば完了です.
これで,VSCodeを用いたJava環境が整いました!

Javaプロジェクトの作成と実行

プロジェクトとは,開発するプログラムを構成するソースファイルや,それらをコンパイルして実行するための設定などをまとめたもののことを指します.
早速プロジェクトを作成してみましょう.

Javaプロジェクトの作成

  1. Ctrl+Shift+PもしくはF1でコマンドパレットを開き,Create Java Projectを選択 image.png
  2. プロジェクトタイプはNo Build Toolsを選択
    image.png

  3. フォルダーを選択

  4. プロジェクトの名前を入力(ここではHelloWorld
    image.png

これでプロジェクトが作成できました!

実行

プロジェクトを作成すると,以下の画像のようにいくつかのファイルが自動で作成されます.
src/App.javaを見てみるとデフォルトでHello, World!を出力するプログラムがあります.
image.png

mainの上にRun|Debugと書いてありますね.
このプログラムを実行するには,このRunをクリックすればOKです.

実行結果
Hello, World!

これで,プロジェクトの作成と実行ができました!

今後の記事で,じゃんけんを実装しながらオブジェクト指向入門をしていきます.

参考

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

[Java] PDFバージョンを変換する

日常生活や仕事の中では、私たちの使ってるデバイスが、PDFバージョンに
厳しい条件が必要だという場合はよくあるんでしょう?こういう時なら、PDFバージョンを変換して、そのデバイスに合わせる必要があると思います。だから、この記事では、Free Spire.PDF for Javaを使用してPDFバージョンを変換する方法を説明します(PDFバージョン1.0-1.7 変換可能)

JARパッケージのインポート
方法1: Free Spire.PDF for Javaをダウンロードして解凍したら、libフォルダーのSpire.Pdf.jarパッケージを依存関係としてJavaアプリケーションにインポートします。

方法2: Mavenリポジトリから直接にJARパッケージをインストールしたら、pom.xmlファイルを次のように構成します。

<repositories>
   <repository>
      <id>com.e-iceblue</id>
      <name>e-iceblue</name>
      <url>http://repo.e-iceblue.com/nexus/content/groups/public/</url>
   </repository>
</repositories>
<dependencies>
   <dependency>
      <groupId>e-iceblue</groupId>
      <artifactId>spire.pdf.free</artifactId>
      <version>3.9.0</version>
   </dependency>
</dependencies>

Javaサンプルコード:

package com.spire.pdf;

public class ChangePdfVersion {

    public static void main(String[] args) {

        //PdfDocumentオブジェクトを作成します
        PdfDocument document = new PdfDocument();

        //PDFドキュメントを読み込みます
        document.loadFromFile("test.pdf");

        //PDFバージョンを1.6に変更します
        document.getFileInfo().setVersion(PdfVersion.Version_1_6);

        //ドキュメントを保存します
        document.saveToFile("ChangePdfVersion.pdf", FileFormat.PDF);
        document.close();
    }
}

完成例:
ch.png

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

ThymeleafでJavaScriptを生成する

概要

ひょんなことからThymeleafでJavaScriptを触ることがあったので備忘録です。

環境

OpenJDK 11.0.2
SpringBoot 2.3.4
Thymeleaf 3.0.11

TemplateEngine設定

AppConfig.java
@Configuration
public class AppConfig {

    @Bean
    public TemplateEngine scriptTemplateEngine() {
        final TemplateEngine templateEngine = new TemplateEngine();
        templateEngine.setDialect(new SpringStandardDialect());
        templateEngine.setTemplateResolver(scriptTemplateResolver());

        return templateEngine;
    }

    private ITemplateResolver scriptTemplateResolver() {

        final ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
        templateResolver.setPrefix("/templates/scripts/");
        templateResolver.setSuffix(".js");
        templateResolver.setTemplateMode(TemplateMode.JAVASCRIPT);
        templateResolver.setCharacterEncoding("utf-8");
        templateResolver.setCacheable(false);
        templateResolver.setCheckExistence(true);

        return templateResolver;
    }
}

テンプレートファイル作成

resources/templates/scripts/sample.js
'use strict';

(() => {

    const rawData = [# th:text="${rawData}" /];
    const jsonData = [# th:text="${jsonData}" /]; 

    console.log(rawData);
    console.log(jsonData);

})();

2つの変数を渡す形にします。

コントローラ設定

SampleController.java
@Controller
@RequiredArgsConstructor
public class SampleController {

    private final TemplateEngine scriptTemplateEngine;
    private final ObjectMapper objectMapper;

    @GetMapping(value = "/app.js", produces = "text/javascript")
    @ResponseBody
    public String sample() throws JsonProcessingException {

        String path = "sample";

        Map<String, Object> map = new HashMap<>();
        map.put("id", 1);
        map.put("name", "Takeshi");
        List<Map<String, Object>> list = new ArrayList<>();
        list.add(map);

        Context ctx = new Context();
        ctx.setVariable("rawData", list);
        ctx.setVariable("jsonData", objectMapper.writeValueAsString(list));

        return scriptTemplateEngine.process(path, ctx);
    }
}

sample()の方でデータを作成し、先ほどの変数名と同じ名前でそれぞれデータそのものとJSON文字列に変換したデータをprocessメソッドに渡し返却します。
注意したいのがthymeleaf-spring5の依存性を追加すると、自動でViewを返却するためのBeanがtemplateEngineという名前で作成されます。
設定ファイルで作成したBeanを使用する場合はその際に使用したBean名でDIする必要があります。

結果

アプリを起動し/app.jsにアクセスしてみます。
Screen Shot 2020-10-16 at 6.36.38.png

無事作成できました。
動的にJS作成する機会はそうそうないとは思いますが参考まで。

Thymeleafのアップデートは2年ほどないみたいですね。
開発止まったのですかね。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む