Closed benyaminl closed 11 months ago
I tried to ask on forum, but failed
So here we go
I need some help folks, I try to follow https://www.zkoss.org/wiki/ZK_Installation_Guide/Quick_Start/Create_and_Run_Your_First_ZK_Application_with_Spring_Boot
And if I only add zkspringboot, it will works. But I really need Database Access in the Backend (I tried to follow https://books.zkoss.org/zkessentials-book/master/spring_integration/wire_spring_beans.html), but ends up failed because I can't even add zkplus and use @VariableResolver(org.zkoss.zkplus.spring.DelegatingVariableResolver.class)
This is my maven dependencies
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-validation</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.zkoss.zkspringboot</groupId>
<artifactId>zkspringboot-starter</artifactId>
<type>pom</type>
<version>${zkspringboot.version}</version>
</dependency>
<dependency>
<groupId>org.zkoss.zk</groupId>
<artifactId>zkbind</artifactId>
<version>${zkoss.version}</version>
</dependency>
<dependency>
<groupId>org.zkoss.zk</groupId>
<artifactId>zkplus</artifactId>
<version>${zkoss.version}</version>
</dependency>
</dependencies>
And The error output is
java.lang.IllegalStateException: Failed to introspect Class [org.zkoss.zkspringboot.ZkAutoConfiguration] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@5cb0d902] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:483) ~[spring-core-6.0.13.jar:6.0.13] at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:360) ~[spring-core-6.0.13.jar:6.0.13] at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:417) ~[spring-core-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.lambda$getTypeForFactoryMethod$1(AbstractAutowireCapableBeanFactory.java:748) ~[spring-beans-6.0.13.jar:6.0.13] at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[na:na] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:747) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:680) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:651) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1630) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:560) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:532) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:119) ~[spring-context-6.0.13.jar:6.0.13] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:779) ~[spring-context-6.0.13.jar:6.0.13] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:597) ~[spring-context-6.0.13.jar:6.0.13] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:738) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:440) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:316) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-3.1.5.jar:3.1.5] at id.salt.malang.fif.FifApplication.main(FifApplication.java:10) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.1.5.jar:3.1.5] Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletRequestAttributeListener at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na] at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) ~[na:na] at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[na:na] at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) ~[na:na] at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) ~[na:na] at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) ~[na:na] at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na] at java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[na:na] at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3402) ~[na:na] at java.base/java.lang.Class.getDeclaredMethods(Class.java:2504) ~[na:na] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:465) ~[spring-core-6.0.13.jar:6.0.13] ... 25 common frames omitted Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletRequestAttributeListener at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na] ... 38 common frames omitted 2023-11-07T15:00:23.005+07:00 WARN 187405 --- [ restartedMain] o.s.boot.SpringApplication : Unable to close ApplicationContext java.lang.IllegalStateException: Failed to introspect Class [org.zkoss.zkspringboot.ZkAutoConfiguration] from ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@5cb0d902] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:483) ~[spring-core-6.0.13.jar:6.0.13] at org.springframework.util.ReflectionUtils.doWithMethods(ReflectionUtils.java:360) ~[spring-core-6.0.13.jar:6.0.13] at org.springframework.util.ReflectionUtils.getUniqueDeclaredMethods(ReflectionUtils.java:417) ~[spring-core-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.lambda$getTypeForFactoryMethod$1(AbstractAutowireCapableBeanFactory.java:748) ~[spring-beans-6.0.13.jar:6.0.13] at java.base/java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1708) ~[na:na] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryMethod(AbstractAutowireCapableBeanFactory.java:747) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.determineTargetType(AbstractAutowireCapableBeanFactory.java:680) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:651) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1630) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.DefaultListableBeanFactory.doGetBeanNamesForType(DefaultListableBeanFactory.java:560) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeanNamesForType(DefaultListableBeanFactory.java:532) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:659) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:651) ~[spring-beans-6.0.13.jar:6.0.13] at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1312) ~[spring-context-6.0.13.jar:6.0.13] at org.springframework.boot.SpringApplication.getExitCodeFromMappedException(SpringApplication.java:867) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.getExitCodeFromException(SpringApplication.java:855) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.handleExitCode(SpringApplication.java:842) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:782) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:329) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1306) ~[spring-boot-3.1.5.jar:3.1.5] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1295) ~[spring-boot-3.1.5.jar:3.1.5] at id.salt.malang.fif.FifApplication.main(FifApplication.java:10) ~[classes/:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:na] at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[na:na] at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:na] at java.base/java.lang.reflect.Method.invoke(Method.java:568) ~[na:na] at org.springframework.boot.devtools.restart.RestartLauncher.run(RestartLauncher.java:50) ~[spring-boot-devtools-3.1.5.jar:3.1.5] Caused by: java.lang.NoClassDefFoundError: javax/servlet/ServletRequestAttributeListener at java.base/java.lang.ClassLoader.defineClass1(Native Method) ~[na:na] at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1017) ~[na:na] at java.base/java.security.SecureClassLoader.defineClass(SecureClassLoader.java:150) ~[na:na] at java.base/jdk.internal.loader.BuiltinClassLoader.defineClass(BuiltinClassLoader.java:862) ~[na:na] at java.base/jdk.internal.loader.BuiltinClassLoader.findClassOnClassPathOrNull(BuiltinClassLoader.java:760) ~[na:na] at java.base/jdk.internal.loader.BuiltinClassLoader.loadClassOrNull(BuiltinClassLoader.java:681) ~[na:na] at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:639) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na] at java.base/java.lang.Class.getDeclaredMethods0(Native Method) ~[na:na] at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3402) ~[na:na] at java.base/java.lang.Class.getDeclaredMethods(Class.java:2504) ~[na:na] at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:465) ~[spring-core-6.0.13.jar:6.0.13] ... 26 common frames omitted Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletRequestAttributeListener at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na] at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na] at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na] ... 39 common frames omitted [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.662 s [INFO] Finished at: 2023-11-07T15:00:23+07:00 [INFO] ------------------------------------------------------------------------
Any pointer or help is appreciated. I use 9.6.3-Eval version. We want to proceed with spring and use spring validation, jpa, security, and others. with zkoss UI.
Thank you
quick check first, could you send your pom's
That error message looks like you are trying to mix Jakarta and Java dependencies, so it could be caused by your ${zkoss.version} property not targetting a -jakarta version. To note: Spring 6.X (and spring-boot 3.X) have switched from java servlet to jakarta servlet. As a result, if your container uses jakarta, you need to use the -jakarta version of the ZK dependencies.
Hello @mduchemin Thanks for replying.
For the -jakarta, is there any -eval that I can test? Thank you
Hey @benyaminl,
there is. Current latest is 9.6.4 You will need to add the Eval repository to your pom. https://mavensync.zkoss.org/eval/org/zkoss/zk/zk/9.6.4-jakarta-Eval/
You can also find the latest CE version here: https://mavensync.zkoss.org/maven2/org/zkoss/zk/zk/9.6.0.2-jakarta/
To clarify the use case of ZK with version-jakarta:
ZK uses the servlet API for a number of features. Because of this, the ZK dependencies require either javax.servlet or jakarta.servlet to be available on your web container.
A number of vendors (including Spring) are moving from Java to Jakarta in their more recent releases. In the case of Spring, Spring 5.X and lower, as well as spring-boot 2.X and lower use the javax.servlet specs However, Spring 6 (and spring-boot 3) have transitioned to jakarta.servlet specs.
(even though you may not be manually configuring a web container for your spring-boot project, internally spring-boot will provide one with the matching servlet implementation).
Because of all of that, ZK has been providing "dual" versions of recent ZK releases: without suffix, ex: zk-9.6.4.jar <- the javax.servlet implementation with -jakarta suffix, ex zk-9.6.4-jakarta <- the jakarta.servlet implementation
This way, you can select the version of ZK which matches your web container's servlet implementation.
A warning regarding your ZK dependencies, since you are loading some manually in addition to the ones provided by the zk spring boot starter project: You should make sure that all of your ZK dependencies use the same version.
ZK springboot 3.0.0 uses:
If you manually load zkplus-9.6.4-jakarta, you will have jars from 2 different versions in your build, which is going to cause issues. You will need to choose which ZK version you want to use, and either use maven dependency management to force all ZK jars to 9.6.4, or downgrade your manually loaded zkplus to 9.0.0
I suggest running a mvn dependency:tree
command on your project to verify that your dependencies are loaded as expected
I suggest running a
mvn dependency:tree
command on your project to verify that your dependencies are loaded as expected
[INFO] id.salt.malang:fif:jar:0.0.1-SNAPSHOT [INFO] +- org.springframework.boot:spring-boot-starter-web:jar:3.1.5:compile [INFO] | +- org.springframework.boot:spring-boot-starter:jar:3.1.5:compile [INFO] | | +- org.springframework.boot:spring-boot-starter-logging:jar:3.1.5:compile [INFO] | | | +- ch.qos.logback:logback-classic:jar:1.4.11:compile [INFO] | | | | - ch.qos.logback:logback-core:jar:1.4.11:compile [INFO] | | | +- org.apache.logging.log4j:log4j-to-slf4j:jar:2.20.0:compile [INFO] | | | | - org.apache.logging.log4j:log4j-api:jar:2.20.0:compile [INFO] | | | - org.slf4j:jul-to-slf4j:jar:2.0.9:compile [INFO] | | +- jakarta.annotation:jakarta.annotation-api:jar:2.1.1:compile [INFO] | | - org.yaml:snakeyaml:jar:1.33:compile [INFO] | +- org.springframework.boot:spring-boot-starter-json:jar:3.1.5:compile [INFO] | | +- com.fasterxml.jackson.core:jackson-databind:jar:2.15.3:compile [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jdk8:jar:2.15.3:compile [INFO] | | +- com.fasterxml.jackson.datatype:jackson-datatype-jsr310:jar:2.15.3:compile [INFO] | | - com.fasterxml.jackson.module:jackson-module-parameter-names:jar:2.15.3:compile [INFO] | +- org.springframework.boot:spring-boot-starter-tomcat:jar:3.1.5:compile [INFO] | | +- org.apache.tomcat.embed:tomcat-embed-core:jar:10.1.15:compile [INFO] | | - org.apache.tomcat.embed:tomcat-embed-websocket:jar:10.1.15:compile [INFO] | +- org.springframework:spring-web:jar:6.0.13:compile [INFO] | | +- org.springframework:spring-beans:jar:6.0.13:compile [INFO] | | - io.micrometer:micrometer-observation:jar:1.11.5:compile [INFO] | | - io.micrometer:micrometer-commons:jar:1.11.5:compile [INFO] | - org.springframework:spring-webmvc:jar:6.0.13:compile [INFO] | +- org.springframework:spring-context:jar:6.0.13:compile [INFO] | - org.springframework:spring-expression:jar:6.0.13:compile [INFO] +- org.springframework.boot:spring-boot-starter-data-jpa:jar:3.1.5:compile [INFO] | +- org.springframework.boot:spring-boot-starter-aop:jar:3.1.5:compile [INFO] | | - org.aspectj:aspectjweaver:jar:1.9.20:compile [INFO] | +- org.springframework.boot:spring-boot-starter-jdbc:jar:3.1.5:compile [INFO] | | +- com.zaxxer:HikariCP:jar:5.0.1:compile [INFO] | | - org.springframework:spring-jdbc:jar:6.0.13:compile [INFO] | +- org.hibernate.orm:hibernate-core:jar:6.2.13.Final:compile [INFO] | | +- jakarta.persistence:jakarta.persistence-api:jar:3.1.0:compile [INFO] | | +- jakarta.transaction:jakarta.transaction-api:jar:2.0.1:compile [INFO] | | +- org.jboss.logging:jboss-logging:jar:3.5.3.Final:compile [INFO] | | +- org.hibernate.common:hibernate-commons-annotations:jar:6.0.6.Final:runtime [INFO] | | +- io.smallrye:jandex:jar:3.0.5:runtime [INFO] | | +- com.fasterxml:classmate:jar:1.5.1:compile [INFO] | | +- net.bytebuddy:byte-buddy:jar:1.14.9:runtime [INFO] | | +- org.glassfish.jaxb:jaxb-runtime:jar:4.0.3:runtime [INFO] | | | - org.glassfish.jaxb:jaxb-core:jar:4.0.3:runtime [INFO] | | | +- org.eclipse.angus:angus-activation:jar:2.0.1:runtime [INFO] | | | +- org.glassfish.jaxb:txw2:jar:4.0.3:runtime [INFO] | | | - com.sun.istack:istack-commons-runtime:jar:4.1.2:runtime [INFO] | | +- jakarta.inject:jakarta.inject-api:jar:2.0.1:runtime [INFO] | | - org.antlr:antlr4-runtime:jar:4.10.1:compile [INFO] | +- org.springframework.data:spring-data-jpa:jar:3.1.5:compile [INFO] | | +- org.springframework.data:spring-data-commons:jar:3.1.5:compile [INFO] | | +- org.springframework:spring-orm:jar:6.0.13:compile [INFO] | | +- org.springframework:spring-tx:jar:6.0.13:compile [INFO] | | - org.slf4j:slf4j-api:jar:2.0.9:compile [INFO] | - org.springframework:spring-aspects:jar:6.0.13:compile [INFO] +- org.springframework.boot:spring-boot-starter-security:jar:3.1.5:compile [INFO] | +- org.springframework:spring-aop:jar:6.0.13:compile [INFO] | +- org.springframework.security:spring-security-config:jar:6.1.5:compile [INFO] | - org.springframework.security:spring-security-web:jar:6.1.5:compile [INFO] +- org.springframework.boot:spring-boot-starter-validation:jar:3.1.5:compile [INFO] | +- org.apache.tomcat.embed:tomcat-embed-el:jar:10.1.15:compile [INFO] | - org.hibernate.validator:hibernate-validator:jar:8.0.1.Final:compile [INFO] | - jakarta.validation:jakarta.validation-api:jar:3.0.2:compile [INFO] +- org.springframework.boot:spring-boot-devtools:jar:3.1.5:runtime [INFO] | +- org.springframework.boot:spring-boot:jar:3.1.5:compile [INFO] | - org.springframework.boot:spring-boot-autoconfigure:jar:3.1.5:compile [INFO] +- org.springframework.boot:spring-boot-starter-test:jar:3.1.5:test [INFO] | +- org.springframework.boot:spring-boot-test:jar:3.1.5:test [INFO] | +- org.springframework.boot:spring-boot-test-autoconfigure:jar:3.1.5:test [INFO] | +- com.jayway.jsonpath:json-path:jar:2.8.0:test [INFO] | +- jakarta.xml.bind:jakarta.xml.bind-api:jar:4.0.1:runtime [INFO] | | - jakarta.activation:jakarta.activation-api:jar:2.1.2:runtime [INFO] | +- net.minidev:json-smart:jar:2.4.11:test [INFO] | | - net.minidev:accessors-smart:jar:2.4.11:test [INFO] | | - org.ow2.asm:asm:jar:9.3:test [INFO] | +- org.assertj:assertj-core:jar:3.24.2:test [INFO] | +- org.hamcrest:hamcrest:jar:2.2:test [INFO] | +- org.junit.jupiter:junit-jupiter:jar:5.9.3:test [INFO] | | +- org.junit.jupiter:junit-jupiter-api:jar:5.9.3:test [INFO] | | | +- org.opentest4j:opentest4j:jar:1.2.0:test [INFO] | | | +- org.junit.platform:junit-platform-commons:jar:1.9.3:test [INFO] | | | - org.apiguardian:apiguardian-api:jar:1.1.2:test [INFO] | | +- org.junit.jupiter:junit-jupiter-params:jar:5.9.3:test [INFO] | | - org.junit.jupiter:junit-jupiter-engine:jar:5.9.3:test [INFO] | | - org.junit.platform:junit-platform-engine:jar:1.9.3:test [INFO] | +- org.mockito:mockito-core:jar:5.3.1:test [INFO] | | +- net.bytebuddy:byte-buddy-agent:jar:1.14.9:test [INFO] | | - org.objenesis:objenesis:jar:3.3:test [INFO] | +- org.mockito:mockito-junit-jupiter:jar:5.3.1:test [INFO] | +- org.skyscreamer:jsonassert:jar:1.5.1:test [INFO] | | - com.vaadin.external.google:android-json:jar:0.0.20131108.vaadin1:test [INFO] | +- org.springframework:spring-core:jar:6.0.13:compile [INFO] | | - org.springframework:spring-jcl:jar:6.0.13:compile [INFO] | +- org.springframework:spring-test:jar:6.0.13:test [INFO] | - org.xmlunit:xmlunit-core:jar:2.9.1:test [INFO] +- org.springframework.security:spring-security-test:jar:6.1.5:test [INFO] | - org.springframework.security:spring-security-core:jar:6.1.5:compile [INFO] | - org.springframework.security:spring-security-crypto:jar:6.1.5:compile [INFO] +- org.postgresql:postgresql:jar:42.6.0:runtime [INFO] | - org.checkerframework:checker-qual:jar:3.31.0:runtime [INFO] +- org.zkoss.zkspringboot:zkspringboot-starter:pom:3.0.0:compile [INFO] | +- org.zkoss.zkspringboot:zkspringboot-autoconfig:jar:3.0.0:compile [INFO] | +- com.google.code.gson:gson:jar:2.10.1:compile [INFO] | +- com.fasterxml.jackson.core:jackson-core:jar:2.15.3:compile [INFO] | - com.fasterxml.jackson.core:jackson-annotations:jar:2.15.3:compile [INFO] +- org.zkoss.zk:zkbind:jar:9.6.3-jakarta-Eval:compile [INFO] | +- org.zkoss.zk:zul:jar:9.6.3-jakarta-Eval:compile [INFO] | | - org.zkoss.zk:zk:jar:9.6.3-jakarta-Eval:compile [INFO] | | +- org.zkoss.common:zweb:jar:9.6.3-jakarta-Eval:compile [INFO] | | | - org.zkoss.common:zcommon:jar:9.6.3-jakarta-Eval:compile [INFO] | | | +- org.zkoss.common:zel:jar:9.6.3-jakarta-Eval:compile [INFO] | | | - org.apache-extras.beanshell:bsh:jar:2.0b6:compile [INFO] | | +- org.zkoss.zk:zkwebfragment:jar:9.6.3-jakarta-Eval:compile [INFO] | | +- commons-fileupload:commons-fileupload:jar:1.4:compile [INFO] | | - commons-io:commons-io:jar:2.8.0:compile [INFO] | - org.javassist:javassist:jar:3.28.0-GA:compile [INFO] - org.zkoss.zk:zkplus:jar:9.6.3-jakarta-Eval:compile
Seems the dependencies loaded correctly, and now I can run it with Spring Boot 3.1.5, but the autowiring using @WireVariable seems still cause zero result and result in blank service haha... *sad...
It Works, but sadly, I need to define the service name directly in order to make it work. I do have service with @Service annotation with no name, but it's the real implementation. Seems the name should be the same? hmm...
I also already add the WEB-INF with the applicationContext.xml (i'm not sure it's even called on new Spring boot 3)
And I tried the demo-jar, the /mvvm result in error
2023-11-07T22:37:02.009+07:00 INFO 225844 --- [nio-8080-exec-1] o.z.util.resource.impl.LabelLoaderImpl : Opening file:/home/ben/Code/zkspringboot-demo-jar/target/classes/metainfo/zk-label.properties
2023-11-07T22:37:02.034+07:00 ERROR 225844 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[DHtmlUpdateServlet] : Servlet.service() for servlet [DHtmlUpdateServlet] threw exception
java.lang.ClassNotFoundException: org.zkoss.zkex.rt.Runtime
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]
at java.base/java.lang.Class.forName0(Native Method) ~[na:na]
at java.base/java.lang.Class.forName(Class.java:467) ~[na:na]
at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) ~[spring-boot-devtools-3.0.0.jar:3.0.0]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]
at org.zkoss.zuti.zul.TemplateBasedShadowElement.docheck0(TemplateBasedShadowElement.java:209) ~[zuti-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zuti.zul.TemplateBasedShadowElement.afterCompose(TemplateBasedShadowElement.java:74) ~[zuti-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:855) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:824) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:742) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:936) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:891) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:778) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:838) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:796) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:742) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:463) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:371) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.http.ZumlExtendlet.process(ZumlExtendlet.java:144) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.http.ZumlExtendlet.service(ZumlExtendlet.java:115) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.web.util.resource.ClassWebResource.web0(ClassWebResource.java:615) ~[zweb-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.web.util.resource.ClassWebResource.web(ClassWebResource.java:602) ~[zweb-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.web.util.resource.ClassWebResource.service(ClassWebResource.java:282) ~[zweb-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.au.http.DHtmlResourceServlet.doGet0(DHtmlResourceServlet.java:117) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:397) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.1.jar:6.0]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.1.jar:6.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:441) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:367) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:295) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:171) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1414) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1158) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1097) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:973) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1003) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:895) ~[spring-webmvc-6.0.2.jar:6.0.2]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.1.jar:6.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:880) ~[spring-webmvc-6.0.2.jar:6.0.2]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.1.jar:6.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.2.jar:6.0.2]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.2.jar:6.0.2]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.2.jar:6.0.2]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1739) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
2023-11-07T22:37:02.040+07:00 ERROR 225844 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Servlet execution threw an exception] with root cause
java.lang.ClassNotFoundException: org.zkoss.zkex.rt.Runtime
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]
at java.base/java.lang.Class.forName0(Native Method) ~[na:na]
at java.base/java.lang.Class.forName(Class.java:467) ~[na:na]
at org.springframework.boot.devtools.restart.classloader.RestartClassLoader.loadClass(RestartClassLoader.java:121) ~[spring-boot-devtools-3.0.0.jar:3.0.0]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[na:na]
at org.zkoss.zuti.zul.TemplateBasedShadowElement.docheck0(TemplateBasedShadowElement.java:209) ~[zuti-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zuti.zul.TemplateBasedShadowElement.afterCompose(TemplateBasedShadowElement.java:74) ~[zuti-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:855) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:824) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:742) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild0(UiEngineImpl.java:936) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:891) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:778) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreateChild(UiEngineImpl.java:838) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate0(UiEngineImpl.java:796) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execCreate(UiEngineImpl.java:742) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage0(UiEngineImpl.java:463) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.impl.UiEngineImpl.execNewPage(UiEngineImpl.java:371) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.http.ZumlExtendlet.process(ZumlExtendlet.java:144) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.ui.http.ZumlExtendlet.service(ZumlExtendlet.java:115) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.web.util.resource.ClassWebResource.web0(ClassWebResource.java:615) ~[zweb-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.web.util.resource.ClassWebResource.web(ClassWebResource.java:602) ~[zweb-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.web.util.resource.ClassWebResource.service(ClassWebResource.java:282) ~[zweb-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.au.http.DHtmlResourceServlet.doGet0(DHtmlResourceServlet.java:117) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at org.zkoss.zk.au.http.DHtmlUpdateServlet.doGet(DHtmlUpdateServlet.java:397) ~[zk-9.6.0-jakarta-Eval.jar:9.6.0-migrated-1.0.0]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.1.jar:6.0]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.1.jar:6.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:110) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:691) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:441) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:367) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:295) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.servlet.view.InternalResourceView.renderMergedOutputModel(InternalResourceView.java:171) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.view.AbstractView.render(AbstractView.java:314) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1414) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.DispatcherServlet.processDispatchResult(DispatcherServlet.java:1158) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1097) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:973) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1003) ~[spring-webmvc-6.0.2.jar:6.0.2]
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:895) ~[spring-webmvc-6.0.2.jar:6.0.2]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:705) ~[tomcat-embed-core-10.1.1.jar:6.0]
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:880) ~[spring-webmvc-6.0.2.jar:6.0.2]
at jakarta.servlet.http.HttpServlet.service(HttpServlet.java:814) ~[tomcat-embed-core-10.1.1.jar:6.0]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:223) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53) ~[tomcat-embed-websocket-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100) ~[spring-web-6.0.2.jar:6.0.2]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93) ~[spring-web-6.0.2.jar:6.0.2]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201) ~[spring-web-6.0.2.jar:6.0.2]
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:116) ~[spring-web-6.0.2.jar:6.0.2]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:185) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:158) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:197) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:97) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:542) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:119) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:78) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:357) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:400) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:861) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1739) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) ~[tomcat-embed-core-10.1.1.jar:10.1.1]
at java.base/java.lang.Thread.run(Thread.java:833) ~[na:na]
it looks like you are using a shadow element, but don't have the dependencies loaded for that.
To use shadow elements, you need zuti
, which itself requires zkex
(shadow elements are these utility elements for MVVM: https://books.zkoss.org/zk-mvvm-book/8.0/syntax/shadow_elements.html
<apply>, <choose>, <foreach>, <if>, <when>
Both of these are missing from your dependency tree, which means that they are not available in your application after maven build.
Ok Thanks @mduchemin This is really helpful, thank you. I will close this.
FYI, the 3.0.0-SNAPSHOT has been corrected to intended 3.0.0 in the master branch
it looks like you are using a shadow element, but don't have the dependencies loaded for that. To use shadow elements, you need
zuti
, which itself requireszkex
(shadow elements are these utility elements for MVVM: https://books.zkoss.org/zk-mvvm-book/8.0/syntax/shadow_elements.html
<apply>, <choose>, <foreach>, <if>, <when>
Both of these are missing from your dependency tree, which means that they are not available in your application after maven build.
Sorry, for keep asking again, then when using shadow elements, we, must have Enterprise License right? We can't have simple CE package because zuti and zkex is part EE or PE? Is that correct?
Hey @benyaminl,
Yes, the Zkex and Zuti packages are part of the Enterprise Edition (EE) package. MVVM is possible with CE / PE, but the extra features such as the shadow components help a lot with flexibility.
I think it'd be nicer to have the demos point to the -eval versions by default since the projects use features from this edition, will update that shortly.
You can test it with an evalutation version, which is available in Maven or through direct download, buy using the target version ending with -eval
You can find the full list of the difference between the EE, PE and CE editions here: https://www.zkoss.org/whyzk/Features
On the folder https://mavensync.zkoss.org/maven2/org/zkoss/zkspringboot/zkspringboot-starter/, there are no -SNAPSHOT, seems this need to be changed to 3.0.0 only
And I'm finding problem when using -eval on the version, the demo project failed to launch for full blown spring. I tried to search the books and docs, I really can't comprehend why it's broken...
This cause @WireVariable can't work :'(