netbeans 未找到类异常:org.apache.catalina.realm.JDBCRealm

nxagd54h  于 2022-11-10  发布在  Apache
关注(0)|答案(2)|浏览(448)

我尝试为应用程序实现安全性,因此我向应用程序的context.xml文件添加了一个Realm元素,如下所示

<Context path="/myApp_admin2">
    <Realm className="org.apache.catalina.realm.JDBCRealm" 
           driverClassName="com.mysql.cj.jdbc.Driver"
           onnectionURL="jdbc:mysql://localhost:3306/mydb?autoReconnect=true" 
           connectionName="root" connectionPassword="12345" 
           debug="99"
           roleNameCol="Rolename" userCredCol="Password" 
           userNameCol="Username" userRoleTable="userrole" userTable="userpass"/>
</Context>

运行应用程序时收到类未找到异常

java.lang.ClassNotFoundException: org.apache.catalina.realm.JDBCRealm
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:433)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:586)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
        at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:102)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1264)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:518)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1386)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2725)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:541)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224)
        at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
        at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1522)
        at org.apache.catalina.startup.ContextConfig.processContextConfig(ContextConfig.java:735)
        at org.apache.catalina.startup.ContextConfig.contextConfig(ContextConfig.java:679)
        at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:949)
        at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:314)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:137)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:173)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:693)
        at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1979)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:586)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:476)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1708)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:320)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
        at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:946)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:795)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
21-Aug-2022 13:04:15.284 SEVERE [main] org.apache.catalina.startup.ContextConfig.processContextConfig Parse error in context.xml for [/myApp_admin2]
    org.xml.sax.SAXParseException; systemId: file:/C:/apache-tomcat-10.0.14/conf/Catalina/localhost/myApp_admin2.xml; lineNumber: 3; columnNumber: 353; Error at line [3] column [353]: [org.apache.catalina.realm.JDBCRealm]
        at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1953)
        at org.apache.tomcat.util.digester.Digester.createSAXException(Digester.java:1985)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1267)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.startElement(AbstractSAXParser.java:518)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractXMLDocumentParser.emptyElement(AbstractXMLDocumentParser.java:183)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1386)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2725)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:605)
        at java.xml/com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:541)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:888)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:824)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
        at java.xml/com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1224)
        at java.xml/com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:635)
        at org.apache.tomcat.util.digester.Digester.parse(Digester.java:1522)
        at org.apache.catalina.startup.ContextConfig.processContextConfig(ContextConfig.java:735)
        at org.apache.catalina.startup.ContextConfig.contextConfig(ContextConfig.java:679)
        at org.apache.catalina.startup.ContextConfig.init(ContextConfig.java:949)
        at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:314)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
        at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:137)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:173)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:726)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:698)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:747)
        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:693)
        at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1979)
        at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:515)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:123)
        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:586)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:476)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1708)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:320)
        at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:123)
        at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:423)
        at org.apache.catalina.util.LifecycleBase.setState(LifecycleBase.java:366)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:946)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:886)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
        at java.base/java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:145)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919)
        at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:263)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardService.startInternal(StandardService.java:432)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:927)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:795)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:78)
        at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.base/java.lang.reflect.Method.invoke(Method.java:567)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:345)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:476)
    Caused by: java.lang.ClassNotFoundException: org.apache.catalina.realm.JDBCRealm
        at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:433)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:586)
        at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:519)
        at org.apache.tomcat.util.digester.ObjectCreateRule.begin(ObjectCreateRule.java:102)
        at org.apache.tomcat.util.digester.Digester.startElement(Digester.java:1264)
        ... 58 more

我按照从该网站获得的说明设置Tomcat以使用JDBCRealm,https://mobiuse.adm.com/docs/realm-howto.html
1-将JDBC驱动程序添加到项目的库中x1c 0d1x 2-将JDBC驱动程序添加到TOMCAT LIB文件夹下

3-在DB中创建具有特定列的两个表

create table userpass (
  username       varchar(15) not null primary key,
  password         varchar(15) not null
);

create table userrole (
  username         varchar(15) not null,
  rolename         varchar(15) not null,
  primary key (username, rolename)
);

那么,你的建议是什么,这种错误背后的原因是什么?
注意:我使用的是apache-tomcat-10.0.14服务器NetBeans IDE 13 JDK 16

xeufq47z

xeufq47z1#

JDBCRealm已从Tomcat 10中删除。在Tomcat 9的发行说明中:
JDBC数据库领域已过时,将从Tomcat 10及更高版本中删除。请改用DataSourceRealm。
您可以通过查看the javadoc for Tomcat 10.0.23JDBCRealm不存在。
因此,要么(暂时)降级到Tomcat 9,要么切换到使用DataSourceRealm
这个旧的Apache线程Deprecated JDBCRealm可以解释删除的动机:

I'd like to proposed the following:
- Deprecated the JDBCRealm in 7.0.x, 8.5.x and 9.0.x
- Remove the JDBCRealm in 10.0.x

The reasons for this are:
- The JDBCRealm is single threaded
- The DataSourceRealm is a better solution
wr98u20j

wr98u20j2#

org.apache.catalina.realm.JDBCRealm在Tomcat 10及以后版本中已被删除。您可以使用org.apache.catalina.realm.DataSourceRealm来代替。

相关问题