2013-05-08 :-(
_ [クラスパス][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={長兄=デス, 次兄=サルーイン, 末妹=シェラハ}}
クラスパスでググる位ならGradleでビルドすればいいじゃない!
ググった。Gradle入門 #gradle - Qiita [キータ] http://qiita.com/items/83366fbfa47562fafbf4<br><br>あかん...<br><br>すごく... エクスカリバーで鶏を切るような...
ラッパーと<br>apply java<br><br>dependencies {<br> yami 1.3<br>}<br><br>とかかいて<br>gradlew<br>で完成