问题描述
我有一个小的TornadoFx桌面客户端应用程序。最近,我在后端实现了Keycloak。我想利用keycloak-installed-adapter
进行身份验证。不幸的是,当我导入库时,因为找不到主类,所以在java -jar <jarfile>
时应用程序将无法启动-我得到:
java.lang.classNotFoundException: pl.myapp.desktop.AppApplication
at java.net.urlclassloader.findClass(urlclassloader.java:382)
at java.lang.classLoader.loadClass(ClassLoader.java:424)
at java.lang.classLoader.loadClass(ClassLoader.java:357)
at fxlauncher.AbstractLauncher.createApplicationEnvironment(AbstractLauncher.java:170)
at fxlauncher.Launcher.lambda$start$0(Launcher.java:152)
at java.lang.Thread.run(Thread.java:748)
从IDE启动应用程序没有问题。从IDE和Terminal运行时,我确定我使用的是同一个Java可执行文件。
我的build.gradle
:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'no.tornado:fxlauncher-gradle-plugin:1.0.20'
}
}
plugins {
id 'java'
id 'org.jetbrains.kotlin.jvm' version '1.3.70'
id 'application'
}
apply plugin: 'no.tornado.fxlauncher'
fxlauncher {
applicationvendor 'myapp-Desktop'
applicationUrl 'https://www.myapp.com/app'
whatsNew 'https://www.myapp.com/new.html'
applicationMainClass 'pl.myapp.desktop.AppApplication'
acceptDowngrade true
}
group 'myapp-desktop'
version '1.3.0'
sourceCompatibility = 1.8
application{
mainClassName "pl.myapp.desktop.AppApplication"
}
jar {
manifest {
attributes(
'Main-Class': 'pl.myapp.desktop.AppApplication'
)
}
from {
configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
}
}
applicationDefaultJvmArgs = ["-xms1024m","-Xmx2048m"]
repositories {
mavenCentral()
jcenter()
maven {
setUrl("https://plugins.gradle.org/m2/")
}
}
task deploy(type: Exec){
dependsOn 'embedApplicationManifest'
commandLine 'sh','./deploy.sh'
}
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation "no.tornado:tornadofx:1.7.17"
implementation 'org.codehaus.griffon:griffon-javafx:2.15.0'
implementation 'com.google.code.gson:gson:2.8.6'
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.2'
implementation 'com.github.kittinunf.fuel:fuel:2.2.2'
implementation 'com.github.kittinunf.fuel:fuel-gson:2.2.2'
implementation 'com.github.kittinunf.fuel:fuel-jackson:2.2.2'
implementation 'org.zeroturnaround:zt-zip:1.14'
implementation "com.fasterxml.jackson.datatype:jackson-datatype-hppc:2.11.0"
implementation "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.11.0"
implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jdk8:2.11.0'
implementation "com.fasterxml.jackson.core:jackson-annotations:2.11.0"
implementation "com.fasterxml.jackson.core:jackson-databind:2.11.0"
implementation "com.fasterxml.jackson.module:jackson-module-afterburner:2.11.0"
implementation "com.fasterxml.jackson.module:jackson-module-kotlin:2.11.0"
implementation("org.keycloak:keycloak-installed-adapter:10.0.2")
testImplementation "com.google.truth:truth:1.0"
testImplementation 'org.amshove.kluent:kluent:1.56'
testImplementation group: 'junit',name: 'junit',version: '4.12'
}
compileKotlin {
kotlinoptions.jvmTarget = "1.8"
}
compileTestKotlin {
kotlinoptions.jvmTarget = "1.8"
}
最小应用:
package pl.myapp.desktop
import javafx.stage.Stage
import pl.myapp.desktop.view.login.LoginView
import tornadofx.*
class AppApplication : App(LoginView::class) {
override fun start(stage: Stage) {
super.start(stage)
with(stage) {
centerOnScreen()
}
}
}
项目结构:
projectRoot:
|
----src
|
---main
|
----- kotlin (code here)
|
----- resources
|
------meta-inf
|
----- keycloak.json
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)