当我尝试在 Eclipse 中运行以下 build.xml 文件以使用我的 java 应用程序中的 mysql 时,我收到以下错误消息:
BUILD FAILED
d:\mypath\workspace\appname\database\build.xml:14: Execute failed: java.io.IOException: Cannot run program "mysql": CreateProcess error=2, 系统找不到指定的文件
这是 build.xml 的代码:
<?xml version="1.0" encoding="UTF-8"?>
<project name="publisher" default="all" basedir=".">
<property name="mysql.params" value="-u publisher -ppublisher -D publisher" />
<target name="all" depends="cleandb, createdb, insertdb"></target>
<target name="cleandb">
<exec executable="mysql" input="cleandb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
<target name="createdb">
<exec executable="mysql" input="createdb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
<target name="insertdb">
<exec executable="mysql" input="insertdb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
</project>
从 Eclipse 中,我将文件作为“Ant Build ...”运行,并首先调用 createdb.sql。因此,抛出的行是被要求执行的第一行,即:
问题似乎是脚本无法找到mysql。在 Windows 命令行中,我可以使用以下路径调用数据库实例:
d:\mypath\MySQL\MySQL Server\bin\mysqld
我认为xml文件需要指定mysql安装的路径,但我不确定如何做到这一点,同时还要传递上面代码中所需的参数。这是我第一次使用 Ant 和 mysql,所以语法对我来说是新的。
谁能告诉我如何修复上面的代码,以便它可以找到我的数据库?
编辑:
我按照whiskyspider的建议编辑了我的代码如下:
-- I had a bunch of code here that I am now omitting for brevity because
-- there is a newer, revised version of the code in the second edit below.
它可能有助于一些读者知道我正在尝试使用本教程中的代码。不同之处在于我使用的是 mysql 5.6 版和版本:Juno Service Release 1 Build id: 20120920-0800 of Eclipse。本教程使用两个应用程序的旧版本,这就是造成混乱的原因。
第二次编辑:
我再次更改了 build.xml 文件以实现whiskyspider的第二轮更正。该脚本现在访问 mysql 数据库,但下面还有另一条我有疑问的消息。
这是新的 build.xml 代码,现在可以正常运行:
<?xml version="1.0" encoding="UTF-8"?>
<project name="publisher" default="all" basedir=".">
<property name="mysql.params" value="-u publisher -ppublisher -D publisher" />
<property name="mysql.exec.path" value="d:\\mypath\\MySQL\\bin\\"/>
<target name="all" depends="cleandb, createdb, insertdb"></target>
<target name="cleandb">
<exec executable="${mysql.exec.path}/mysqld" input="cleandb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
<target name="createdb">
<exec executable="${mysql.exec.path}/mysqld" input="createdb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
<target name="insertdb">
<exec executable="${mysql.exec.path}/mysqld" input="insertdb.sql">
<arg line="${mysql.params}" />
</exec>
</target>
</project>
以下是运行 build.xml 时 Eclipse 控制台中报告的日志:
Buildfile: d:\mypath\workspace\publisher\database\build.xml
createdb:
[exec] Warning: Using a password on the command line interface can be insecure.
insertdb:
[exec] Warning: Using a password on the command line interface can be insecure.
BUILD SUCCESSFUL
Total time: 1 second
当我需要使用密码从使用 eclipse 运行的 ant 代码进入数据库时,谁能告诉我如何通过提高安全性来解决此警告?具体来说,如何更改我的代码以便执行相同的任务而没有安全风险?