shell编程<三> 引用

SHELL引用类型包括双引号、单引号、反引号、反斜线

1,双引号

使用双引号可以引用除字符美元符号($)、反引号(`)、反斜线(\)外的任意字符或字符串。

2,单引号

与双引号类似,不同的是shell会忽略任何引用值。

GIRL='girl'

echo "The '$GIRL' did well"

执行结果

The 'girl' did well

3,反引号

用于设置系统命令的输出到变量,shell将反引号中的内容作为一个系统命令,并执行其内容。

使用这种方法可以替换输出一个变量。

$mydate=`date +%A" the "%e" of "%B" "%Y`

$echo $mydate

Sunday the 16 of May 2012

-----------------------------------------------

$echo "The date today is `date`"

The date today is Sun May 16 10:50:28 GTM 2012

4,反斜线

如果下一个字符有特殊含义,反斜线屏蔽其特殊含义。

包含特殊含义的字符 : & * + ^ $ ` " | ?

$echo *  #顺序打印当前整个目录列表

$echo \*     #输出字符*

$echo $$   #输出当前进程ID

$echo \$$ #输出字符$$

$expr 12 \* 12  #使用命令expr时,用*表示乘法会出错,因此要加反斜杠才正确

$expr abcdef : '\(abc\)'   

输出:abc

$expr abcdef : abc

输出:3

$expr abcdef : 'abc'

输出:3


MD_BOOT_HOME: D:\ProjectCode\IDEA\igix-shell-tool\tool\ ECHO 处于关闭状态。 ECHO 处于关闭状态。 Checking java home: D:\inBuilder\jdk Checking MD bootstrap: "D:\ProjectCode\IDEA\igix-shell-tool\tool\lcm-metadata-shell-0.1.36.jar" "D:\inBuilder\jdk\bin\java" -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 -jar "D:\ProjectCode\IDEA\igix-shell-tool\tool\lcm-metadata-shell-0.1.36.jar" 用法: java [-options] class [args...] (执行类) 或 java [-options] -jar jarfile [args...] (执行 jar 文件) 其中选项包括: -d32 使用 32 位数据模型 (如果可用) -d64 使用 64 位数据模型 (如果可用) -server 选择 "server" VM 默认 VM 是 server. -cp <目录和 zip/jar 文件的类搜索路径> -classpath <目录和 zip/jar 文件的类搜索路径> 用 ; 分隔的目录, JAR 档案 和 ZIP 档案列表, 用于搜索类文件。 -D<名称>=<值> 设置系统属性 -verbose:[class|gc|jni] 启用详细输出 -version 输出产品版本并退出 -version:<值> 警告: 此功能已过时, 将在 未来发行版中删除。 需要指定的版本才能运行 -showversion 输出产品版本并继续 -jre-restrict-search | -no-jre-restrict-search 警告: 此功能已过时, 将在 未来发行版中删除。 在版本搜索中包括/排除用户专用 JRE -? -help 输出此帮助消息 -X 输出非标准选项的帮助 -ea[:<packagename>...|:<classname>] -enableassertions[:<packagename>...|:<classname>] 按指定的粒度启用断言 -da[:<packagename>...|:<classname>] -disableassertions[:<packagename>...|:<classname>] 禁用具有指定粒度的断言 -esa | -enablesystemassertions 启用系统断言 -dsa | -disablesystemassertions 禁用系统断言 -agentlib:<libname>[=<选项>] 加载本机代理库 <libname>, 例如 -agentlib:hprof 另请参阅 -agentlib:jdwp=help 和 -agentlib:hprof=help -agentpath:<pathname>[=<选项>] 按完整路径名加载本机代理库 -javaagent:<jarpath>[=<选项>] 加载 Java 编程语言代理, 请参阅 java.lang.instrument -splash:<imagepath> 这是为什么,给我解决呀
03-13
<think>嗯,用户在使用Java命令行启动JAR包时报错,需要解决这个问题。首先,我得考虑常见的错误原因,比如JAR文件损坏、依赖缺失、JDK版本不兼容、路径错误或者权限问题。用户提供的JDK路径是D:\inBuilder\jdk,项目路径在D:\ProjectCode\IDEA下,可能在Windows环境下,需要注意路径中的空格或者特殊字符? 接下来,按照步骤分析。第一步检查JAR完整性,可以用jar -tvf命令看看是否能列出内容。如果有错误,可能是下载不完整或者构建问题。然后确认JDK安装是否正确,检查java -version是否与项目要求的版本一致。比如,项目可能需要JDK 8,而用户安装的是更高版本,或者反之。 依赖缺失的话,需要确认JAR是否包含所有依赖,或者是否使用了-classpath指定外部依赖。如果JAR是Spring Boot的可执行JAR,可能需要特定的启动方式。另外,检查主类清单属性是否正确,有时候MANIFEST.MF里没有指定Main-Class,导致无法找到主类。 路径方面,用户的项目路径中有没有空格?比如“Program Files”这样的目录可能会有问题,需要用引号包裹路径。权限问题的话,确保用户有权限执行JAR文件,可能需要以管理员身份运行CMD。 查看具体的错误信息是关键,用户可能没有提供错误日志,所以需要提示用户提供具体的异常堆栈,比如ClassNotFoundException、NoClassDefFoundError或者版本不兼容的提示。例如,如果出现UnsupportedClassVersionError,说明编译版本高于运行环境,需要升级JDK。 引用中提到的内容似乎不太相关,比如引用[1]是关于Android包管理的代码修改,引用[2]是关于Jenkins的配置,可能用户复制时包含了其他问题的引用,需要忽略这些,专注于JAR启动的问题。 最后,生成相关问题时要考虑用户可能遇到的后续问题,比如依赖管理、环境变量配置、日志分析等,帮助用户全面排查可能的原因。</think>### 解决Java命令行启动JAR包报错的分步指南 #### 1. **检查JAR文件完整性** - 执行命令验证JAR文件结构: ```bash $ jar -tvf D:\ProjectCode\IDEA\igix-shell-tool\tool\lcm-metadata-shell-0.1.36.jar ``` 若出现`java.util.zip.ZipException`,说明文件损坏,需重新下载或构建[^1]。 #### 2. **确认JDK环境配置** - 检查JDK版本兼容性: ```bash $ D:\inBuilder\jdk\bin\java -version ``` 对比项目要求的JDK版本(如JDK 8/11/17)。若版本不匹配,需安装对应JDK并更新`JAVA_HOME`。 #### 3. **排查依赖缺失问题** - 若错误提示`ClassNotFoundException`,需检查: - JAR是否包含`META-INF/MANIFEST.MF`文件中的`Class-Path`依赖路径 - 使用显式依赖加载: ```bash $ java -cp "D:\path\to\lib\*.jar" -jar lcm-metadata-shell-0.1.36.jar ``` #### 4. **检查主类声明** - 解压JAR查看清单文件: ```bash $ unzip -p lcm-metadata-shell-0.1.36.jar META-INF/MANIFEST.MF ``` 确认包含`Main-Class: com.example.MainClassName`字段。 #### 5. **处理路径特殊字符** - 对含空格的路径使用引号: ```bash $ java -jar "D:\ProjectCode\IDEA\igix-shell-tool\tool\lcm-metadata-shell-0.1.36.jar" ``` #### 6. **查看详细错误日志** - 添加调试参数: ```bash $ java -XX:+ShowCodeDetailsInExceptionMessages -jar lcm-metadata-shell-0.1.36.jar ``` --- ### 典型错误解决方案对照表 | 错误类型 | 解决方案 | |---------------------------|-----------------------------------| | `Unsupported major.minor version` | 升级JDK版本匹配编译环境 | | `No main manifest attribute` | 添加`-Dexec.mainClass`指定主类 | | `AccessDeniedException` | 以管理员身份运行CMD/PowerShell | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xtudj

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值