为了账号安全,请及时绑定邮箱和手机立即绑定

类路径在Linux下不起作用

/ 猿问

类路径在Linux下不起作用

繁星点点滴滴 2019-10-19 16:59:51

任何人都知道为什么该命令在Windows中可以正常工作,但是在Linux中,我得到了ClassNotFoundException game.ui.Main


java -cp ".;lib/*" game.ui.Main -Xms64m -Xmx128m

我的文件夹结构如下:lib /-Jars游戏/-类文件


这是最新的Java 6。


查看完整描述

3 回答

?
慕森卡

类路径语法与操作系统有关。从维基百科:


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


在所有类似Unix的操作系统(例如Linux和Mac OS X)上,目录结构具有Unix语法,并用冒号(“:”)分隔单独的文件路径。


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


当清单文件中定义了Classpath时,此方法不适用,其中每个文件路径都必须由空格(“”)分隔,而与操作系统无关。


查看完整回答
反对 回复 2019-10-19
?
翻阅古今

在要在两种平台(Windows(即cygwin)和Linux)上运行的脚本中使用类路径时,路径也很重要。当我这样做时,我为类路径包括了一个类似这样的函数。带有'-w'选项的'cygpath'命令将路径转换为Windows样式的路径。因此,在此示例中,“ / home / user / lib / this.jar”将被转换为“ C:\ Cygwin \ home \ user \ lib \ this.jar”


#!/bin/bash


function add_java_classpath() {

  local LOCAL1=$1

  if [ "$OSTYPE" == cygwin ]; then

    LOCAL1="$(cygpath -C ANSI -w $LOCAL1)"

  fi

  if [ -z "$JAVA_CLASSPATH" ]; then

    JAVA_CLASSPATH="$LOCAL1"

  elif [ "$OSTYPE" != cygwin ]; then

    JAVA_CLASSPATH="${JAVA_CLASSPATH}:$LOCAL1"

  else

    JAVA_CLASSPATH="${JAVA_CLASSPATH};$LOCAL1"

  fi      

}


add_java_classpath /home/user/lib/this.jar

add_java_classpath /usr/local/lib/that/that.jar


java -cp "${JAVA_CLASSPATH}" package.Main $@


查看完整回答
反对 回复 2019-10-19
?
呼啦一阵风

视窗:

java -cp file.jar;dir/* my.app.ClassName

Linux:

java -cp file.jar:dir/* my.app.ClassName

提醒:

  • Windows路径分隔符为 ;

  • Linux路径分隔符是 :

  • 在Windows中,如果cp参数不包含空格,则引号是可选的


查看完整回答
反对 回复 2019-10-19

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信