在运行 \james-2.3.2.1\bin\run.bat 文件时异常,不能启动服务。
PS:直接运行 \james-2.3.2.1\bin\run.bat 文件时 cmd一闪而过不能看到异常。
可以在 \james-2.3.2.1\bin\目录下运行 cmd 界面,输入 run.bat 启动服务,失败后 cmd 不会关闭,这样就看以看到错误信息。
通过查看异常,主要错误包括:
Caused by: org.apache.avalon.framework.configuration.ConfigurationException: destination>>URL
Caused by: java.io.IOException: 文件名、目录名或卷标语法不正确。
通过异常可以大概知道是配置的 destination 属性的 URL 不正确。
打开配置文件 \james-2.3.2.1\apps\james\SAR-INF\config.xml,可以在其中看到
<!-- The LocalUsers repository, for storing James' User info. -->
<repository name="LocalUsers" class="org.apache.james.userrepository.UsersFileRepository">
<destination URL="file://var/users/"/>
</repository>
这里默认用文件储存用户信息。注释掉这个配置,将下方的 数据库支持取消注释。
<!-- The LocalUsers repository, for storing James' User info. -->
<repository name="LocalUsers" class="org.apache.james.userrepository.JamesUsersJdbcRepository" destinationURL="db://maildb/users">
<sqlFile>file://conf/sqlResources.xml</sqlFile>
</repository>
再下面,将 data-source 取消注释,将连接属性改为自己的。
<data-source name="maildb" class="org.apache.james.util.dbcp.JdbcDataSource">
<driver>com.mysql.jdbc.Driver</driver>
<dburl>jdbc:mysql://127.0.0.1:3306/james_mail_db?characterEncoding=UTF-8</dburl>
<user>root</user>
<password>123456</password>
<poolPreparedStatements>true</poolPreparedStatements>
<max>20</max>
</data-source>
现在还需要将数据库驱动加入到 \james-2.3.2.1\lib 中。
现在重新启动就OK了。
Using PHOENIX_HOME: D:\ApplicationInstalls\James\james-2.3.2.1
Using PHOENIX_TMPDIR: D:\ApplicationInstalls\James\james-2.3.2.1\temp
Using JAVA_HOME: D:\ApplicationInstalls\JDK\jdk1.8.0_72
Phoenix 4.2
James Mail Server 2.3.2.1
Remote Manager Service started plain:4555
POP3 Service started plain:110
SMTP Service started plain:25
NNTP Service started plain:119
FetchMail Disabled
如果该文对您有帮助,可以给我点个赞给予肯定,谢谢!