質問編集履歴

1

コマンドプロンプト文を変更し、ClassPathは通した。

2020/01/05 06:53

投稿

picohead
picohead

スコア8

test CHANGED
File without changes
test CHANGED
@@ -10,27 +10,47 @@
10
10
 
11
11
  コマンドプロンプト上で下記を実行すると、
12
12
 
13
+ ~~kotlinc-jvm.bat -include-runtime -d json.jar json.kt~~
14
+
15
+ (コンパイルは通りました)
16
+
13
17
  ```
14
18
 
15
- kotlinc-jvm.bat -include-runtime -d json.jar json.kt
19
+ kotlinc-jvm.bat ".\json.kt" -cp "~\moshi-1.9.2.jar" -include-runtime -d ".\json.jar"
20
+
21
+ java -cp "~\moshi-1.9.2.jar;~\okio-1.14.0.jar;.\json.jar" JsonKt
22
+
23
+
16
24
 
17
25
  ```
18
26
 
19
27
  以下のエラーが出ます。
20
28
 
29
+ ~~json.kt:1:12: error: unresolved reference: squareup~~
30
+
31
+ ~~import com.squareup.moshi.Json;~~
32
+
33
+ ~~ ^~~
34
+
35
+ ~~json.kt:8:16: error: unresolved reference: Moshi~~
36
+
37
+ ~~ val adapter = Moshi.Builder().build().adapter(User::class.java);~~
38
+
39
+ ~~ ^~~
40
+
21
41
  ```
22
42
 
23
- json.kt:1:12: error: unresolved reference: squareup
43
+ Exception in thread "main" java.lang.IllegalArgumentException: Cannot serialize Kotlin type User. Reflective serialization of Kotlin classes without using kotlin-reflect has undefined and unexpected behavior. Please use KotlinJsonAdapter from the moshi-kotlin artifact or use code gen from the moshi-kotlin-codegen artifact.
24
44
 
25
- import com.squareup.moshi.Json;
45
+ at com.squareup.moshi.ClassJsonAdapter$1.create(ClassJsonAdapter.java:83)
26
46
 
27
- ^
47
+ at com.squareup.moshi.Moshi.adapter(Moshi.java:138)
28
48
 
29
- json.kt:8:16: error: unresolved reference: Moshi
49
+ at com.squareup.moshi.Moshi.adapter(Moshi.java:98)
30
50
 
31
- val adapter = Moshi.Builder().build().adapter(User::class.java);
51
+ at com.squareup.moshi.Moshi.adapter(Moshi.java:72)
32
52
 
33
- ^
53
+ at JsonKt.main(json.kt:11)
34
54
 
35
55
  ```
36
56
 
@@ -42,7 +62,9 @@
42
62
 
43
63
  ```Kotlin
44
64
 
65
+ //json.kt
66
+
45
- import com.squareup.moshi.Json;
67
+ import com.squareup.moshi.*;
46
68
 
47
69
 
48
70
 
@@ -56,9 +78,11 @@
56
78
 
57
79
  // クラス→JSON変換
58
80
 
59
- val adapter = Moshi.Builder().build().adapter(User::class.java);
81
+ val m:Moshi = Moshi.Builder().build();
60
82
 
83
+ val ja:JsonAdapter<User> = m.adapter(User::class.java);
84
+
61
- val decodeJson = adapter.toJson(user);
85
+ val decodeJson:String = ja.toJson(user);
62
86
 
63
87
 
64
88
 
@@ -84,8 +108,6 @@
84
108
 
85
109
  }
86
110
 
87
-
88
-
89
111
  ```
90
112
 
91
113
 
@@ -94,7 +116,15 @@
94
116
 
95
117
 
96
118
 
97
- 「unresolved reference」でググると、import時の誤字やそもそもimportしてないという情報は見つかりましたが、import自体でエラーというケースは見つからず、行き詰まってしまいました。
119
+ ~~「unresolved reference」でググると、import時の誤字やそもそもimportしてないという情報は見つかりましたが、import自体でエラーというケースは見つからず、行き詰まってしまいました。
120
+
121
+ ~~
122
+
123
+ -cpオプションでClassPathは通せたと思うのですが、型の渡し方が良くないのかエラーとなってしまいました。
124
+
125
+ "User::class.java"を"User.class","User()","User"などに変えるとコンパイルエラーでした。
126
+
127
+ そもそも"::"の意味がわからないのと、"class.java"なんてファイル作った覚えがないのが原因でしょうか。
98
128
 
99
129
 
100
130