package example
import org.pkl.config.java.Config
import org.pkl.config.java.ConfigEvaluator
import org.pkl.config.kotlin.forKotlin
import org.pkl.config.kotlin.to
import org.pkl.core.ModuleSource
class SoldierConfig {
private val config: Config = ConfigEvaluator.preconfigured().forKotlin().use { evaluator ->
evaluator.evaluate(ModuleSource.modulePath("SoldierConfig.pkl"))
}
private val soldier = config.to<Soldier>()
fun getBandungConfig() : Soldier.SoldierRequirement? {
return soldier.soldierConfigs.getOrNull(0)
}
}
I call the class at MainActivity.kt, like this
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val soldierConfig = SoldierConfig()
val requirementBandung = soldierConfig.getBandungConfig()
println("reqBandung: minAge is "+requirementBandung?.minAge)
}
I'm successfull on code generation and run it at main() fun, but failed when access the config from the class in app with error
FATAL EXCEPTION: main
Process: id.visionplus.android.atv.stag, PID: 2366
java.lang.NoSuchMethodError: No static method of(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path; in class Ljava/nio/file/Path; or its super classes (declaration of 'java.nio.file.Path' appears in /system/framework/core-oj.jar)
at org.pkl.core.util.IoUtils.getPklHomeDir(IoUtils.java:164)
at org.pkl.core.util.IoUtils.getDefaultModuleCacheDir(IoUtils.java:169)
at org.pkl.core.EvaluatorBuilder.<init>(EvaluatorBuilder.java:53)
at org.pkl.core.EvaluatorBuilder.preconfigured(EvaluatorBuilder.java:89)
at org.pkl.config.java.ConfigEvaluatorBuilder.preconfigured(ConfigEvaluatorBuilder.java:47)
at org.pkl.config.java.ConfigEvaluator.preconfigured(ConfigEvaluator.java:30)
at example.SoldierConfig.<init>(SoldierConfig.kt:9)
at id.visionplus.android.atv.presentation.main.MainActivity.onCreate(MainActivity.kt:126)
at android.app.Activity.performCreate(Activity.java:7161)
at android.app.Activity.performCreate(Activity.java:7152)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3114)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1839)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6833)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:500)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Please help me, what's wrong and how to solve it?
Originally created by @bayuwijdev on GitHub (Feb 22, 2024).
I'm very excited to learn about Apple Pickle and I just following the documentation of [configuration for kotlin](https://pkl-lang.org/main/current/kotlin-binding/pkl-config-kotlin.html) and [example for config-kotlin](https://github.com/apple/pkl-jvm-examples/),
I have SoldierConfig at my resources.

This is my ``SoldierConfig.kt``
```
package example
import org.pkl.config.java.Config
import org.pkl.config.java.ConfigEvaluator
import org.pkl.config.kotlin.forKotlin
import org.pkl.config.kotlin.to
import org.pkl.core.ModuleSource
class SoldierConfig {
private val config: Config = ConfigEvaluator.preconfigured().forKotlin().use { evaluator ->
evaluator.evaluate(ModuleSource.modulePath("SoldierConfig.pkl"))
}
private val soldier = config.to<Soldier>()
fun getBandungConfig() : Soldier.SoldierRequirement? {
return soldier.soldierConfigs.getOrNull(0)
}
}
```
I call the class at MainActivity.kt, like this
```
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
val soldierConfig = SoldierConfig()
val requirementBandung = soldierConfig.getBandungConfig()
println("reqBandung: minAge is "+requirementBandung?.minAge)
}
```
I'm successfull on code generation and run it at main() fun, but failed when access the config from the class in app with error
```
FATAL EXCEPTION: main
Process: id.visionplus.android.atv.stag, PID: 2366
java.lang.NoSuchMethodError: No static method of(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path; in class Ljava/nio/file/Path; or its super classes (declaration of 'java.nio.file.Path' appears in /system/framework/core-oj.jar)
at org.pkl.core.util.IoUtils.getPklHomeDir(IoUtils.java:164)
at org.pkl.core.util.IoUtils.getDefaultModuleCacheDir(IoUtils.java:169)
at org.pkl.core.EvaluatorBuilder.<init>(EvaluatorBuilder.java:53)
at org.pkl.core.EvaluatorBuilder.preconfigured(EvaluatorBuilder.java:89)
at org.pkl.config.java.ConfigEvaluatorBuilder.preconfigured(ConfigEvaluatorBuilder.java:47)
at org.pkl.config.java.ConfigEvaluator.preconfigured(ConfigEvaluator.java:30)
at example.SoldierConfig.<init>(SoldierConfig.kt:9)
at id.visionplus.android.atv.presentation.main.MainActivity.onCreate(MainActivity.kt:126)
at android.app.Activity.performCreate(Activity.java:7161)
at android.app.Activity.performCreate(Activity.java:7152)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2946)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3114)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1839)
at android.os.Handler.dispatchMessage(Handler.java:110)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6833)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:500)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
```
Please help me, what's wrong and how to solve it?
@StefMa commented on GitHub (Feb 22, 2024):
[Path.of()](https://developer.android.com/reference/java/nio/file/Path#of(java.lang.String,%20java.lang.String[])) was added in API 34. Make sure your phone runs in this version. Then it might work 😉
Otherwise you could try using desugaring
= https://developer.android.com/studio/write/java11-nio-support-table
It seems this brings also support for older android versions.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Originally created by @bayuwijdev on GitHub (Feb 22, 2024).
I'm very excited to learn about Apple Pickle and I just following the documentation of configuration for kotlin and example for config-kotlin,
I have SoldierConfig at my resources.
This is my
SoldierConfig.ktI call the class at MainActivity.kt, like this
I'm successfull on code generation and run it at main() fun, but failed when access the config from the class in app with error
Please help me, what's wrong and how to solve it?
@StefMa commented on GitHub (Feb 22, 2024):
Path.of() was added in API 34. Make sure your phone runs in this version. Then it might work 😉
Otherwise you could try using desugaring
= https://developer.android.com/studio/write/java11-nio-support-table
It seems this brings also support for older android versions.
@StefMa commented on GitHub (Feb 29, 2024):
@bwijayap does this solve/fix the problem?
Would be good to know 🙃