JavaFx RichText RunTime Error java.lang.NoClassDefFoundError: org/fxmisc/richtext/TextFlowLayout - javafx

I have a runtime error for java.lang.Exception: java.lang.NoClassDefFoundError: org/fxmisc/richtext/TextFlowLayout. I'm using java14 and JavaFx13. I use Maven to download the dependencies and use the maven-assembly-plugin to package my dependencies in a single jar.
I already added in require org.fxmisc.richtext in module-info.java. At design time, the class call works. But not at runtime.
Mavem:
<dependency>
<groupId>org.fxmisc.richtext</groupId>
<artifactId>richtextfx</artifactId>
<version>0.10.5</version>
</dependency>
The error occurs when instantiating the class in Runtime:
CodeArea codeArea = new CodeArea();

The MANIFEST.MF file must contain Multi-Release: true
<archive>
<manifestEntries>
<Multi-Release>true</Multi-Release>
</manifestEntries>
</archive>
Link solution: https://github.com/FXMisc/RichTextFX/issues/966

Related

Maven Dependencies Jar Missing for Slf4j wrapper

I have a project in Maven for ExtentReports. When I run it, the test fail and says.
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
When I check the project properties -> java build path -> libraries. ->Maven Dependencies
rxjava-3.0.4.jar (missing)
freemarker-2.3.30.jar (missing)
lombok-1.18.12.jar (missing)
when I go to POM.xml
4.0.0
it says:
could not transfer artifact io.reactivex.rxjava3:rxjava:jar3.0.4
I tried downloading the said jars in mvn repository but it doesnt make any changes.
SLF4j wrapper is generally provided by Lombok.
I recommend you put these dependencies in your pom.xml:
You need the SLF4j wrapper AS WELL AS a dependency for which implementation you want to use. (Logback in this case).
<!--region Lombok Configuration -->
<!-- logger guide https://gist.github.com/stykalin/8c77ad2a705eabddc2424eff0e99d1ec -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.22</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.2.11</version>
</dependency>
<!-- endregion -->
Also, you will need to setup a src/main/resources/logback.xml file. Also, put #Slf4j Lombok annotation at the top of your class files where you need to do a log.info("Message").
IF you still have problems, the command mvn dependency:tree can perhaps help you find dependency conflicts.

Start weblogic weblogic12.2.1.4.0 causes exceptions

I imported my maven project then I started my project on my weblogic server but it gives
java.lang.NoSuchMethodError: weblogic.i18n.logging.CatalogMessage.getLocalizerResourceName()
I checked my jar file and I saw it does not contains CatalogMessage class.Do you have any idea how to fix that problem.
My pom fies contains weblogic 10.3.2.0 jar but it does not contains necessary class files
My full error message :
The WebLogic Server encountered a critical failure
Reason:weblogic.common.internal.VersionInfo.initialize(ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIII)V
Exception in thread "main" java.lang.NoSuchMethodError: weblogic.i18n.logging.CatalogMessage.getLocalizerResourceName()Ljava/lang/String;
at weblogic.logging.MessageLogger.log(MessageLogger.java:68)
at weblogic.logging.MessageLogger.log(MessageLogger.java:114)
at weblogic.logging.WLMessageLogger.log(WLMessageLogger.java:52)
at weblogic.kernel.T3SrvrLogger.logServerStateChange(T3SrvrLogger.java:2284)
at weblogic.t3.srvr.T3Srvr.setState(T3Srvr.java:190)
at weblogic.t3.srvr.T3Srvr.run(T3Srvr.java:458)
at weblogic.Server.main(Server.java:67)
I cannot understand why project contains weblogic 10.3.2.0 jar?I use weblogic 12.2.1.4.0 .
My pom file is :
<dependency>
<groupId>com.myRepo.reporter-application.project</groupId>
<artifactId>weblogic</artifactId>
<version>10.3.2.0</version>
<scope>provided</scope>
</dependency>

Getting bundle exception while deploying app to Apache Karaf

I'm developing simple application to demonstrate use of Apache Karaf.I have developed one simple maven based dynamic web project in eclipse.Now I want to deploy it in apache karaf.Following is that code-
import org.osgi.framework.BundleActivator;
import org.osgi.framework.BundleContext;
public class DemoActivator implements BundleActivator {
#Override
public void start(BundleContext bundleContext) throws Exception {
System.out.println("STARTING DEMO: hello, world");
}
#Override
public void stop(BundleContext bundleContext) throws Exception {
System.out.println("STOPPING DEMO");
}
}
Dependancies in POM.Xml
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi_R4_core</artifactId>
<version>1.0</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.osgi</groupId>
<artifactId>osgi_R4_compendium</artifactId>
<version>1.0</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
MANIFEST.MF
Bundle-SymbolicName: osgi-example
Bundle-Version: 1.0.0.SNAPSHOT
Import-Package:com.psl.demo;version="1.0.0.SNAPSHOT",org.osgi.framework
Export-Package: com.psl.demo;version="1.0.0.SNAPSHOT"
Bundle-Activator: com.psl.demo.DemoActivator
Given path of custom MANIFEST file
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile>
</archive>
</configuration>
</plugin>
</plugins>
</build>
Now whenever I'm trying to install application in karaf using-
install mvn:com.psl/osgi-demo-next/1.0.0-SNAPSHOT
Im getting error as-
Error executing command: Error installing bundles: Unable to install
bundle mvn:com.psl.demo/osgi-example/1.0.0.SNAPSHOT:
org.osgi.framework.BundleException: Unable to cache bundle:
mvn:com.psl.demo/osgi-example/1.0.0.SNAPSHOT
Any solution for this? TIA
This error is coming because maven coordinates in bundle install command are not correct. Following is syntax for the same:
karaf#root()> bundle:install mvn:<group-id>/<artifact-id>/<version>
Please validate the content of pom.xml and accordingly put values in above command.
From simplicity perspective, you could check local maven repository to find bundle location and accordingly put values in above bundle install command.

Using the javax.validation API with Spring 3.1.1

I'm using
Spring 3.3.1
WebLogic 11g
JDK 1.60_29
I decided that wanted to do Java based form validation. When I went to compile my code I saw that I needed the javax.validation libraries. So, I put these tags in my pom.xml:
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>1.0.CR5</version>
</dependency>
and I got this ONE extra jar:
validation-api-1.0.CR5.jar
I put that into my war/WEB-INF/lib
I booted up WebLogic 11g and Spring coughed up blood:
[ERROR] - 2012-Jul-06 12:31:13 - servlet.DispatcherServlet:initServletBean(): Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.validation.beanvalidation.LocalValidatorFactoryBean#0': Invocation of init method failed; nested exception is javax.validation.ValidationException: Unable to find a default provider
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1455)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:585)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:913)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:464)
at org.springframework.web.servlet.FrameworkServlet.configureAndRefreshWebApplicationContext(FrameworkServlet.java:631)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:588)
at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:645)
at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:508)
at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:449)
at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:133)
at javax.servlet.GenericServlet.init(GenericServlet.java:212)
at weblogic.servlet.internal.StubSecurityHelper$ServletInitAction.run(StubSecurityHelper.java:283)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:321)
at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:120)
at weblogic.servlet.internal.StubSecurityHelper.createServlet(StubSecurityHelper.java:64)
at weblogic.servlet.internal.StubLifecycleHelper.createOneInstance(StubLifecycleHelper.java:58)
at weblogic.servlet.internal.StubLifecycleHelper.<init>(StubLifecycleHelper.java:48)
at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:539)
at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:1981)
at weblogic.servlet.internal.WebAppServletContext.loadServletsOnStartup(WebAppServletContext.java:1955)
at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:1874)
at weblogic.servlet.internal.WebAppServletContext.start(WebAppServletContext.java:3154)
at weblogic.servlet.internal.WebAppModule.startContexts(WebAppModule.java:1518)
at weblogic.servlet.internal.WebAppModule.start(WebAppModule.java:484)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at weblogic.application.internal.flow.ScopedModuleDriver.start(ScopedModuleDriver.java:200)
at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:247)
at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:425)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.flow.ModuleStateDriver.start(ModuleStateDriver.java:119)
at weblogic.application.internal.flow.StartModulesFlow.activate(StartModulesFlow.java:27)
at weblogic.application.internal.BaseDeployment$2.next(BaseDeployment.java:671)
at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:52)
at weblogic.application.internal.BaseDeployment.activate(BaseDeployment.java:212)
at weblogic.application.internal.SingleModuleDeployment.activate(SingleModuleDeployment.java:44)
at weblogic.application.internal.DeploymentStateChecker.activate(DeploymentStateChecker.java:161)
at weblogic.deploy.internal.targetserver.AppContainerInvoker.activate(AppContainerInvoker.java:79)
at weblogic.deploy.internal.targetserver.BasicDeployment.activate(BasicDeployment.java:184)
at weblogic.deploy.internal.targetserver.BasicDeployment.activateFromServerLifecycle(BasicDeployment.java:361)
at weblogic.management.deploy.internal.DeploymentAdapter$1.doActivate(DeploymentAdapter.java:51)
at weblogic.management.deploy.internal.DeploymentAdapter.activate(DeploymentAdapter.java:200)
at weblogic.management.deploy.internal.AppTransition$2.transitionApp(AppTransition.java:30)
at weblogic.management.deploy.internal.ConfiguredDeployments.transitionApps(ConfiguredDeployments.java:240)
at weblogic.management.deploy.internal.ConfiguredDeployments.activate(ConfiguredDeployments.java:169)
at weblogic.management.deploy.internal.ConfiguredDeployments.deploy(ConfiguredDeployments.java:123)
at weblogic.management.deploy.internal.DeploymentServerService.resume(DeploymentServerService.java:180)
at weblogic.management.deploy.internal.DeploymentServerService.start(DeploymentServerService.java:96)
at weblogic.t3.srvr.SubsystemRequest.run(SubsystemRequest.java:64)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:256)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:221)
Caused by: javax.validation.ValidationException: Unable to find a default provider
at javax.validation.Validation$GenericBootstrapImpl.configure(Validation.java:265)
at org.springframework.validation.beanvalidation.LocalValidatorFactoryBean.afterPropertiesSet(LocalValidatorFactoryBean.java:184)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
... 57 more
Googling around I kept seeing the javax.validation API mentioned with hibernate. Given that and the error message I took the guess that I needed hibernate to provide something so I added a hibernate jar to my war/WEB-INF/lib, but that caused even more errors.
Any ideas about how I can get Spring 3.1.1 and the javax.validation API to play nice?
Thanks much in advance
Steve
Weblogic 11G is Java EE 5 compliant and thus does not implement the JSR-303, javax.validation, spec, which was added as a part of Java EE 6. Consequently, you must add a default provider for this, such as the Hibernate Validator:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>4.3.0.Final</version>
</dependency>
Alternatively, if you upgrade to a Java EE 6 compliant application server, this dependency can be ignored as it is already included.
Btw, you may want to consider to update your javax.validation dependeny to version 1.0.0.GA.

Problems with servlets and maven

i am trying to build my first servlet using maven but don't know what i should add to the POM so the servlet
I have tried to add the below dependencies to the POM file (I found in one of the posts). The addition enables me to compile my servlet but when i try to run mvn package or to test my JUnits i am getting a ClassFormatError:
Initial SessionFactory creation failed.java.lang.ClassFormatError:
Absent Code attribute in method that is not native or abstract
in class file javax/validation/Validation
The pom.xml is:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>6.0</version>
<scope>provided</scope>
</dependency>
<repository>
<id>java.net2</id>
<name>Repository hosting the Java EE 6 artifacts</name>
<url>http://download.java.net/maven/2</url>
</repository>
can someone explain and guide?
Thanks
:-)
At the outset, you may want to follow Senthil's comment above.
As for the error, it is because the specified dependency only has the APIs (method definitions) and not the implementation.
Typically, the implementation is provided by the app server. Hence the application should work in an app server which implements Java EE 6 (like Glassfish).
mvn package should not give any error - it is the test phase before packaging which fails, which you can circumvent, if interested using mvn package -DskipTests.

Resources