java - 如何在 Ubuntu 和 Windows (Cygwin) 中使用的 bash 脚本中设置 Java 类路径

标签 java bash cygwin classpath

我正在编写一个 bash 脚本,它应该执行一些需要特定类路径的 Java 应用程序。

此外,该脚本应该可以在 Ubuntu 和 Windows (Cygwin) 上执行。

问题: Windows 上的分隔符是“;”,而 Ubuntu 上的分隔符是“:”。这导致 Windows 上的 java -cp A.jar;B.jar Main(在使用 cygwin 时也是如此,因为它使用的是 Windows 的 java)和 java -cp A.jar:B.jar在 Ubuntu 上主要

问题:如何在 bash 脚本中检测哪个底层操作系统正在运行/使用哪个 java 类路径分隔符?

最佳答案

一种朴素(但实现起来很快)的方法:首先运行 uname -a 并将其推送到一个变量中。然后检查该输出是否包含“Ubuntu”。

如果是这样,您应该使用“:”作为分隔符;否则 ”;”应该做的。

如果你想为以后的其他平台做好准备;而不是做一个简单的 if/else;您可能想查看 uname -a 在 cygwin 上有什么说法;使用 bash 设置一些 $SEPARATOR_CHAR 变量 switch声明。

关于java - 如何在 Ubuntu 和 Windows (Cygwin) 中使用的 bash 脚本中设置 Java 类路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39996951/

相关文章:

java - Spring JasperReports 图像位置

linux - |在一行的开头 - bash

linux - 将给定类型的所有文件从 Unix 格式转换为 Dos 格式的 Bash 脚本

bash - Windows 上的 GCC - Windows 上 Ubuntu 上的 Bash (WSL)、CygWin、MinGW

windows-10 - cygwin上的sdkman无法安装

java - 轻松路径 JBoss

java - 如何使用 Spring RestTemplate 禁用 SSL 证书检查?

linux - 使用 Batch 解决 Linux 通配符问题

cygwin - 在新的 cygwin 控制台中执行命令

java - Spring 4 vs Jersey 用于 REST Web 服务