0

我知道这个问题已经被问过/回答了好几次,但我仍然找不到解决这个ClassNotFoundException错误的方法,因为它可以在我的计算机上运行,​​但不能在我的 RasPi(我安装了 OpenJDK7)上运行。

我的应用程序使用 JDBC 访问 MySQL 数据库,这是主要问题。正如许多网站( [1][2][3] )所指出的,不幸的是,这是一个常见问题。

所以,我正在使用mysql-connector-java-5.0.8.jar作为驱动程序。我的文件夹结构类似于/src/de/web/project/我通过调用主方法java de.web.project.WakeOnLan(这是启动所有其他类的主类等)。我得到了常见的 ClassNotFound 异常,因此添加了 -cp 参数,所以我通过调用项目java -cp .;mysql-connector-java-5.0.8.jar de.web.project.WakeOnLan来添加驱动程序到类路径。

这从命令行在我的 Windows 计算机上运行良好,但现在我想将此代码推送到我的 Raspberry Pi 并在那里执行它。正如我所说,我在那里安装了 OpenJDK7(使用 apt-get,如果这很重要的话),使用 SFTP 将文件夹结构和代码上传到 /home/pi/java/ 那里还有 ejre1.7.0_10 文件夹(所以代码现在实际上在/home/pi/java/de/web/project/)。

我现在回到 /home/pi/java 并java -cp .;mysql-connector-java-5.0.8.jar de.web.project.WakeOnLan像在 Windows 计算机上一样输入,但它拒绝工作(我已将连接器放在途中的任何文件夹中,以防万一)。当我调用这个函数时,我得到一长串 Java 想要给我哪些参数允许用于 java 的提示,最后说明:-bash: mysql-connector-java-5.0.8.jar: command not found. 我还尝试将“.;mysql ...”转为“mysql ...;。” 这也不起作用。如果我不包含 -cp 参数,我的程序会显示“线程已启动”并在下一行中显示:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver等等,因此程序确实会启动并将“线程已启动”写入 System.out。

出于某种原因,树莓派上的 Java 似乎忽略了类路径参数的第二个值,我看不出有什么好的理由。

4

1 回答 1

1

您可能只是在类路径设置中遇到问题,windows 和 linux 存在差异

类路径语法取决于操作系统。来自维基百科

由于与文件系统密切相关,命令行类路径语法取决于操作系统。例如:

在所有类 Unix 操作系统(如 Linux 和 Mac OS X)上,目录结构具有 Unix 语法,不同的文件路径由冒号 (":") 分隔。

在 Windows 上,目录结构具有 Windows 语法,每个文件路径必须用分号 (";") 分隔。

这不适用于在清单文件中定义类路径时,其中每个文件路径必须用空格 (" ") 分隔,而与操作系统无关。

于 2013-03-07T21:16:57.140 回答