Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 类路径在linux下不工作_Java_Linux_Classpath - Fatal编程技术网

Java 类路径在linux下不工作

Java 类路径在linux下不工作,java,linux,classpath,Java,Linux,Classpath,任何人都知道为什么这个命令在Windows中运行良好,但在Linux中我得到了ClassNotFoundException game.ui.Main java -cp ".;lib/*" game.ui.Main -Xms64m -Xmx128m 我的文件夹结构如下所示: lib/-Jars 游戏/-类文件 这是最新的Java 6。类路径语法依赖于操作系统。发件人: 与文件密切相关 系统,命令行类路径 语法取决于操作系统 系统。例如: 在所有类Unix操作系统上 (如Linux和Mac OS

任何人都知道为什么这个命令在Windows中运行良好,但在Linux中我得到了ClassNotFoundException game.ui.Main

java -cp ".;lib/*" game.ui.Main -Xms64m -Xmx128m
我的文件夹结构如下所示: lib/-Jars 游戏/-类文件


这是最新的Java 6。

类路径语法依赖于操作系统。发件人:

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

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

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

当类路径 在清单文件中定义,其中 每个文件路径必须用 空格(“”),不考虑 操作系统


尝试将分号改为冒号


类路径分隔符依赖于平台,并且与返回的字符相同。

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


窗口:

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

Linux:

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

提醒:

  • Windows路径分隔符为
  • Linux路径分隔符是
  • 在Windows中,如果cp参数不包含空格,则引号是可选的

是的。谢谢我的眼睛快不行了。在我查看的网页上,它看起来像一个半成品还有谁能告诉我如何在脚本中解决这个问题?像python还是shell脚本?因此,我可以使用“独立于平台”的脚本语言运行脚本,以启动用“独立于平台”的编译语言编写的程序?@CodeJockey:您可以测试是否存在仅在Windows上存在的目录,或者检查仅在Windows上设置的一个环境变量(公共、公共程序文件、用户域等)。为什么需要
/*
#!/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 $@