首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何修复JAVAC无效标志错误?

如何修复JAVAC无效标志错误?
EN

Stack Overflow用户
提问于 2020-10-02 15:24:27
回答 1查看 4.1K关注 0票数 1

我试图用javac编译一个shell脚本,它不断地返回以下错误:

代码语言:javascript
运行
复制
$ bash run_RGE.sh

javac: invalid flag: Element.java
Usage: javac <options> <source files>
use -help for a list of possible options
javac: invalid flag: RGE.java
Usage: javac <options> <source files>
use -help for a list of possible options
javac: invalid flag: -Xms1024m
Usage: javac <options> <source files>
use -help for a list of possible options
sleep: missing operand
Try "sleep --help" for more information.

我的shell脚本如下所示:

代码语言:javascript
运行
复制
#!/bin/bash
# -*- coding: utf-8 -*-
export LIB=C:/home/b04280/Transfert/Libs/
CLASSPATH=$(echo "$LIB"/*.jar | tr ' ' ':')
export ficIn=C:/home/b04280/Transfert/rgeII.xlsx/
export repIn=C:/home/b04280/Transfert/rgeII/
export repOut=C:/home/b04280/Transfert/rgeIIcible/
javac -cp $CLASSPATH Element.java
javac -cp $CLASSPATH RGE.java
javac -Xms1024m -Xmx1024m -cp $CLASSPATH  RGE $ficIn $repIn $repOut > docx.txt
sleep 

我想知道这个错误是从何而来的,我在这里看了关于同一主题的其他问题,但它们的解决方案似乎不适合我的具体情况。

有什么帮助吗?提前谢谢。

PS。我也有睡眠错误(我“翻译”了这个脚本从批处理-> shell和“睡眠”是我找到的替代“暂停”)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-10-02 20:52:59

我认为这应该更接近你所需要的:

代码语言:javascript
运行
复制
#!/bin/bash
# -*- coding: utf-8 -*-
lib=/home/b04280/Transfert/Libs
classpath=$(echo "$lib"/*.jar | tr ' ' ':')
fic_in=/home/b04280/Transfert/rgeII.xlsx/
rep_in=/home/b04280/Transfert/rgeII/
rep_out=/home/b04280/Transfert/rgeIIcible/
javac -cp "$classpath" Element.java
javac -cp "$classpath" RGE.java
java -Xms1024m -Xmx1024m -cp "$classpath" RGE "$fic_in" "$rep_in" "$rep_out" > docx.txt

特别是:

  • unix路径
  • 引用变量以避免它们被解析为多个参数,如果它们的值在最后一个命令RGE中包含空格
  • 是一个类名而不是文件路径,则指定内存设置,再加上该命令生成有用的输出;在我看来,它应该执行代码( (javac)
  • I'm ),而不是编译它-- java[c]
  • removed不确定它是否必要,但是从$LIB值中删除尾随斜杠可以避免在$CLASSPATH中使用双斜杠,这可能会混淆无用的export的值(如果调用其他bash脚本或依赖于正在设置的变量的二进制文件,它们会很有用,但您只是将它们作为parameters)
  • applied命名约定传递(避免大写变量,因为它们可能与环境变量发生冲突),使用camelCase).

而不是snake_case

在您的上下文中,我不确定您是在执行java[c]二进制文件的linux版本,还是要执行windows二进制文件。如果是windows,则需要用tr ' ' ':'替换tr ' ' ';'部分,因为windows上的类路径是分号分隔的,而不是冒号分隔的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64174213

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档