解决eclipse启动时报错Unable to acquire application service

下面时本人使用eclipse时出现的错误以及解决方案,写此日志来记录,如果有童鞋碰到这种情况,希望对你有所帮助!!

本人错误信息:!SESSION 2016-01-29 13:15:08.656 -----------------------------------------------
eclipse.buildId=4.5.1.M20150904-0015
java.version=1.7.0_79
java.vendor=Oracle Corporation
BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=zh_CN
Framework arguments:  --startup plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -product org.eclipse.epp.package.jee.product
Command-line arguments:  -os win32 -ws win32 -arch x86 --startup plugins/org.eclipse.equinox.launcher_1.3.100.v20150511-1540.jar -product org.eclipse.epp.package.jee.product


!ENTRY org.eclipse.jdt.annotation 2 0 2016-01-29 13:15:11.065
!MESSAGE Could not resolve module: org.eclipse.jdt.annotation [368]
  Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=1.8))"




!ENTRY org.eclipse.osgi 4 0 2016-01-29 13:15:11.065
!MESSAGE Application error
!STACK 1
java.lang.RuntimeException: Application "" could not be found in the registry. The applications available are: org.eclipse.ant.core.antRunner, org.eclipse.ant.ui.antRunner, org.eclipse.datatools.connectivity.console.profile.StorageFileEditor, org.eclipse.e4.ui.workbench.swt.E4Application, org.eclipse.e4.ui.workbench.swt.GenTopic, org.eclipse.emf.codegen.CodeGen, org.eclipse.emf.codegen.JMerger, org.eclipse.emf.codegen.ecore.Generator, org.eclipse.emf.importer.ecore.Ecore2GenModel, org.eclipse.emf.importer.java.Java2GenModel, org.eclipse.emf.importer.rose.Rose2GenModel, org.eclipse.equinox.app.error, org.eclipse.equinox.p2.director, org.eclipse.equinox.p2.garbagecollector.application, org.eclipse.equinox.p2.publisher.InstallPublisher, org.eclipse.equinox.p2.publisher.EclipseGenerator, org.eclipse.equinox.p2.publisher.ProductPublisher, org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher, org.eclipse.equinox.p2.reconciler.application, org.eclipse.equinox.p2.repository.repo2runnable, org.eclipse.equinox.p2.repository.metadataverifier, org.eclipse.equinox.p2.artifact.repository.mirrorApplication, org.eclipse.equinox.p2.metadata.repository.mirrorApplication, org.eclipse.equinox.p2.touchpoint.natives.nativePackageExtractor, org.eclipse.equinox.p2.updatesite.UpdateSitePublisher, org.eclipse.equinox.p2.publisher.UpdateSitePublisher, org.eclipse.equinox.p2.publisher.CategoryPublisher, org.eclipse.help.base.infocenterApplication, org.eclipse.help.base.helpApplication, org.eclipse.help.base.indexTool, org.eclipse.jdt.apt.core.aptBuild, org.eclipse.jdt.core.JavaCodeFormatter, org.eclipse.jdt.core.JavaIndexer, org.eclipse.pde.build.Build, org.eclipse.pde.junit.runtime.uitestapplication, org.eclipse.pde.junit.runtime.legacytestapplication, org.eclipse.pde.junit.runtime.coretestapplication, org.eclipse.pde.junit.runtime.coretestapplicationnonmain, org.eclipse.pde.junit.runtime.nonuithreadtestapplication, org.eclipse.ui.ide.workbench, org.eclipse.wst.jsdt.core.JavaCodeFormatter, org.eclipse.wst.server.preview.preview.
at org.eclipse.equinox.internal.app.EclipseAppContainer.startDefaultApp(EclipseAppContainer.java:248)
at org.eclipse.equinox.internal.app.MainApplicationLauncher.run(MainApplicationLauncher.java:29)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:380)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608)
at org.eclipse.equinox.launcher.Main.run(Main.java:1515)


解决方法为:查看eclipse/configuration下的config.ini文件,首先看eclipse.product和eclipse.Application这2行,若这2行为空,则需要添加配置信息;

配置信息为:eclipse.product=org.eclipse.platform.ide;eclipse.application=org.eclipse.ui.ide.workbench

<think>好的,用户现在遇到了达梦数据库连接报错,提示“Unable to acquire JDBC Connection”。首先,我需要分析可能的原因,然后给出解决方案。这个问题在数据库连接中比较常见,可能涉及多个方面,比如连接池配置、网络问题、数据库服务状态、用户权限、资源限制等。 首先,用户可能是在使用JDBC连接达梦数据库时遇到了这个问题。我需要先确认用户是否检查了基本的连接参数,比如URL、用户名、密码是否正确。有时候拼写错误或者端口号错误会导致连接失败。此外,数据库服务是否正常运行也是一个关键点,如果服务没启动,自然无法连接。 接下来,连接池配置也是一个常见的问题。如果用户使用了连接池(比如HikariCP、Druid等),可能配置的最大连接数过小,或者连接泄漏导致连接耗尽。需要检查连接池的maxActive、maxWait等参数,看看是否有必要调大或者调整超时时间。 然后,数据库本身的资源限制也不能忽视。达梦数据库有全局的MAX_SESSIONS参数,限制最大会话数。如果当前连接数已经达到这个上限,新的连接请求会被拒绝。这时候需要查看当前的活跃会话数,或者调整MAX_SESSIONS的值。另外,用户级别的资源限制,比如通过PROFILE设置的SESSION_PER_USER,也可能导致某个用户无法建立更多连接。 网络问题也是一个可能性。防火墙或者安全组可能会阻止客户端访问数据库的端口,需要确认5236端口是否开放。此外,使用telnet或者ping命令测试网络连通性也是有帮助的。 用户权限方面,可能用户被锁定了,或者没有登录的权限。需要检查用户的状态,确保ACCOUNT_STATUS是正常的,没有被锁定。同时,用户的权限是否允许从当前主机访问数据库,比如IP限制等。 驱动问题也不容忽视,比如JDBC驱动版本与数据库版本不兼容,或者驱动未正确加载。建议用户检查驱动版本,并确保在项目中正确引入了达梦的JDBC驱动。 还有可能数据库的磁盘空间不足,导致无法创建新的连接或处理请求。需要检查表空间的使用情况,特别是系统表空间是否足够。 另外,日志分析是关键。查看达梦数据库的日志文件(如dm_xxx.log),可以找到更详细的错误信息,帮助定位问题。同时,客户端的日志也可能记录连接失败的原因,比如超时或认证失败。 在处理步骤上,应该建议用户按照从简单到复杂的顺序排查。先检查基本配置和网络,然后看数据库状态和资源限制,接着是连接池和驱动问题,最后分析日志。这样逐步排除可能的原因,找到问题所在。 用户可能需要具体的SQL语句来查询当前会话数或参数配置,比如查询V$PARAMETER视图获取MAX_SESSIONS的值,或者查询V$SESSIONS查看当前连接情况。同时,修改配置的方法,比如使用SP_SET_PARA_VALUE调整参数,或者创建PROFILE限制用户连接数,也需要给出示例代码。 最后,需要提醒用户注意权限问题,很多操作需要SYSDBA权限才能执行,比如修改全局参数或调整用户资源限制。此外,不同版本的达梦数据库可能在系统表结构或参数名称上有差异,建议用户参考对应版本的文档。 总结来说,这个问题需要系统性地排查多个方面,从客户端到服务端,从配置到资源,逐步缩小范围,找到具体原因并解决。</think>在达梦数据库中出现 **"Unable to acquire JDBC Connection"** 错误,通常与数据库连接池资源耗尽、网络问题或权限配置相关。以下是系统化的排查与解决方案: --- ### 一、基础检查 1. **连接参数验证** - 检查JDBC URL格式是否正确: ```java jdbc:dm://IP:端口/数据库名?key1=value1&key2=value2 ``` 默认端口为 **5236**,示例: ```java jdbc:dm://192.168.1.100:5236/DAMENG ``` - 确保用户名、密码无误,且用户未被锁定(检查`SYSDBA.SYSUSERS`的`ACCOUNT_STATUS`字段)。 2. **数据库服务状态** - 通过操作系统命令确认达梦服务是否运行: ```bash systemctl status DmServiceXXX # Linux sc query DmServiceXXX # Windows ``` --- ### 二、连接池问题排查 1. **连接池配置检查** - 若使用连接池(如HikariCP、Druid),检查以下参数: ```properties # 最大活跃连接数 maxActive=50 # 最大等待时间(毫秒) maxWait=30000 ``` - **连接泄漏**:通过`SELECT * FROM V$SESSIONS;`确认是否有未关闭的僵尸连接。 2. **临时解决方案** - 重启应用释放连接池。 - 调整连接池参数(需评估服务器资源): ```java // HikariCP示例 HikariConfig config = new HikariConfig(); config.setMaximumPoolSize(100); // 调大连接数 ``` --- ### 三、数据库资源限制 1. **全局会话数限制** - 查询当前最大会话数: ```sql SELECT * FROM V$PARAMETER WHERE NAME = 'MAX_SESSIONS'; ``` - 若`VALUE`值过低,动态调整(需SYSDBA权限): ```sql SP_SET_PARA_VALUE(1, 'MAX_SESSIONS', 1000); -- 修改为1000 ``` 2. **用户级会话限制** - 检查用户关联的Profile资源限制: ```sql -- 查询用户Profile SELECT USERNAME, PROFILE FROM SYSUSERS WHERE USERNAME = '用户名'; -- 查询Profile的会话限制 SELECT * FROM SYSRESOURCE WHERE PROFILE = 'Profile名称' AND RESOURCE_NAME = 'SESSION_PER_USER'; ``` - 若需修改: ```sql ALTER PROFILE user_profile LIMIT SESSION_PER_USER 50; -- 允许50个会话 ``` --- ### 四、网络与权限问题 1. **防火墙与端口** - 确认数据库端口(默认5236)是否开放: ```bash telnet 192.168.1.100 5236 # 测试连通性 ``` 2. **用户权限验证** - 检查用户是否具有`CREATE SESSION`权限: ```sql SELECT * FROM SYSTABAUTH WHERE GRANTEE = '用户名' AND PRIVILEGE = 'CONNECT'; ``` - 授权语句(SYSDBA执行): ```sql GRANT CREATE SESSION TO 用户名; ``` --- ### 五、高级诊断 1. **日志分析** - 检查达梦数据库日志(默认路径`/dmdata/dameng/log/dm_xxx.log`),搜索`ERROR`或`connection refused`关键词。 - JDBC驱动日志:启用驱动调试参数: ```java jdbc:dm://...&logger=Slf4JLogger&logLevel=DEBUG ``` 2. **驱动兼容性** - 确保JDBC驱动版本与数据库版本匹配(如DM8使用`DmJdbcDriver18.jar`)。 --- ### 六、紧急恢复措施 若生产环境急需恢复,可临时释放会话: ```sql -- 终止指定用户的会话 CALL SP_CLOSE_SESSION(session_id); -- 查询活跃会话 SELECT SESSID, USER_NAME, SQL_TEXT FROM V$SESSIONS WHERE USER_NAME = '用户名'; ``` --- ### 关键总结 | 问题类型 | 排查点 | 解决方案 | |------------------|---------------------------------|-----------------------------------| | 连接池耗尽 | `maxActive`值过小 | 调整连接池参数或优化代码 | | 全局会话数限制 | `MAX_SESSIONS`参数 | 动态修改`MAX_SESSIONS` | | 用户资源限制 | Profile中的`SESSION_PER_USER` | 修改Profile或提升限制 | | 网络不通 | 防火墙/端口拦截 | 开放端口或检查路由 | | 驱动问题 | 驱动版本不兼容 | 更换匹配版本的JDBC驱动 | 通过以上步骤逐步排查,可快速定位问题根源。若仍无法解决,建议提供达梦数据库日志及JDBC完整配置信息进一步分析。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值