トップ «前の日記(2013-05-07) 最新 次の日記(2013-05-09)» 編集

ヨタの日々

2001|08|09|10|11|12|
2002|01|02|03|04|05|06|07|08|09|10|11|12|
2003|01|02|03|04|05|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|02|03|04|05|06|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|12|
2024|01|02|03|

2013-05-08 :-(

_ 午前

0520 起床

0830 準備

_ 午後

1300 準備

1720 退勤

_

1900 Java

2030 ぐったり

2130 飯

_ [クラスパス][classpath][Java][YAML]Java で YAML

JYaml - Yaml library for the Java language を使う。

eclipse は多少使ってるんだけど jar を javac から使うにはどうしたらいいのかさっぱり分からないくらいには老害です。なので。

とりあえずコードを書いて

import java.util.*;
import java.io.*;
import org.ho.yaml.Yaml;

public class JYamlTry2 {
    public static void main(String[] args) throws IOException {
        HashMap<String, String> romasaga1 = new HashMap<String, String>();
        romasaga1.put("長兄", "デス");
        romasaga1.put("次兄", "サルーイン");
        romasaga1.put("末妹", "シェラハ");

        HashMap<String, String> romasaga2 = new HashMap<String, String>();
        romasaga2.put("品川", "ワグナス");
        romasaga2.put("上野", "ノエル");
        romasaga2.put("池袋", "ロックブーケ");
        romasaga2.put("恵比寿", "スービエ");
        romasaga2.put("五反田", "ダンターグ");
        romasaga2.put("大久保", "ボクオーン");
        romasaga2.put("新宿", "クジンシー");

        HashMap<String, String> romasaga3 = new HashMap<String, String>();
        romasaga3.put("魔戦士公", "アラケス");
        romasaga3.put("魔龍公", "ビューネイ");
        romasaga3.put("魔炎長", "アウナス");
        romasaga3.put("魔海侯", "フォルネウス");
        
        HashMap<String, Object> characters = new HashMap<String, Object>();
        characters.put("ロマンシングサガ1", romasaga1);
        characters.put("ロマンシングサガ2", romasaga2);
        characters.put("ロマンシングサガ3", romasaga3);
        

        String filename = "characters.yml";
        Yaml.dump(characters, new File(filename));

        Object ydoc = Yaml.load(new File(filename));
        System.out.println(ydoc);
    }
}

カレントディレクトリに jyaml-1.3.jar を設置しておいて

>dir /b
jyaml-1.3.jar
JYamlTry2.java

どうやらクラスパス( classpath )を設定するらしいので -cp とかやってみたんだが

> javac -cp .\jyaml-1.3.jar  JYamlTry2.java

実行すると怒られたり

> java   JYamlTry2
Exception in thread "main" java.lang.NoClassDefFoundError: org/ho/yaml/Yaml
        at JYamlTry2.main(JYamlTry2.java:34)
Caused by: java.lang.ClassNotFoundException: org.ho.yaml.Yaml
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 1 more

じゃあこれでどうだよとかやってみても怒られたり

>java -cp .\jyaml-1.3.jar  JYamlTry2
エラー: メイン・クラスJYamlTry2が見つからなかったかロードできませんでした

さんざんググってようやくたどり着いた。おまおれ

クラスパスはどこに通るのか?本当に理解しておこう

みんな大好き公式文書

クラスパスの設定

デフォルトのクラスパスは、現在のディレクトリです。このデフォルトは、CLASSPATH 変数を設定したり、-classpath コマンド行オプションを使用したりするとオーバーライドされます。そのため、検索パスに現在のディレクトリを含める場合には、新しい設定に「.」を含める必要があります

Java ツール java、jdb、javac、および javah には、-classpath オプションがあります。このオプションは、ツールの実行中に、CLASSPATH 環境変数によって指定された 1 つまたは複数のパスを別のパスに置き換えます。

(;´Д`)

というわけでコンパイルはこうなる。

>javac -cp .;.\jyaml-1.3.jar  JYamlTry2.java

実行もこうなる。

>java -cp .;.\jyaml-1.3.jar  JYamlTry2
{ロマンシングサガ3={魔龍公=ビューネイ, 魔炎長=アウナス, 魔海侯=フォルネウス, 魔戦士公=アラケス}, ロマンシングサガ2={新宿
=クジンシー, 上野=ノエル, 恵比寿=スービエ, 五反田=ダンターグ, 品川=ワグナス, 大久保=ボクオーン, 池袋=ロックブーケ}, ロマ
ンシングサガ1={長兄=デス, 次兄=サルーイン, 末妹=シェラハ}}
本日のツッコミ(全3件) [ツッコミを入れる]
_ けなく (2013-05-12 17:47)

クラスパスでググる位ならGradleでビルドすればいいじゃない!

_ みわ (2013-05-12 21:14)

ググった。Gradle入門 #gradle - Qiita [キータ] http://qiita.com/items/83366fbfa47562fafbf4<br><br>あかん...<br><br>すごく... エクスカリバーで鶏を切るような...

_ けなく (2013-05-12 22:19)

ラッパーと<br>apply java<br><br>dependencies {<br> yami 1.3<br>}<br><br>とかかいて<br>gradlew<br>で完成