首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么在构建.jar时总是收到无效的标志错误

为什么在构建.jar时总是收到无效的标志错误
EN

Stack Overflow用户
提问于 2022-04-18 00:30:45
回答 1查看 406关注 0票数 0

为什么在构建.jar时总是收到无效的标志错误

当我使用Build在java中创建一个.jar文件时:

代码语言:javascript
复制
rm -rf build-jar && mkdir build-jar && javac -d build-jar /Users/user/Desktop/projects/Swings/source/library/* && jar cvf build-jar/window.jar build-jar *

我总是收到一个错误:

代码语言:javascript
复制
error: invalid flag: /Users/user/Desktop/projects/Swings/source/library/controller
Usage: javac <options> <source files>

如果我使用.class文件的路径:

代码语言:javascript
复制
rm -rf build-jar && mkdir build-jar && javac -d build-jar /Users/user/Library/Application Support/Code/User/workspaceStorage/ca7d24d42ba31de4cfb244fc0f239d07/redhat.java/jdt_ws/swings_12c4bbf0/bin/* && jar cvf build-jar/window.jar build-jar *

我还收到一个错误:

代码语言:javascript
复制
zsh: no matches found: Support/Code/User/workspaceStorage/ca7d24d42ba31de4cfb244fc0f239d07/redhat.java/jdt_ws/swings_12c4bbf0/bin/*

我对构建jar不是很熟悉,它让我头疼,我不知道该怎么做,其他问题的解决方案或在互联网上的解决方案都不适合我(比如Classpath invalid flag - Java等)。

我使用IDE vscode,并使用vscode扩展"JAR Builder“

EN

回答 1

Stack Overflow用户

发布于 2022-04-18 02:01:03

‘明星’扩展是你的外壳所做的事情,。当您在shell中键入ls *.txt时,这不是要运行的内容。你的外壳本身检测到了这一点,然后就会出去找出你真正的意思。实际上,最终执行的是ls a.txt b.txt c.txt --星型匹配的所有东西,都是由空格分隔的。

同样的事情也发生在这里。因此,您获得此错误的原因是:您的shell正在执行:

代码语言:javascript
复制
javac -d build-jar
 /Users/user/Desktop/projects/Swings/source/library/controller
 /Users/user/Desktop/projects/Swings/source/library/model
 /Users/user/Desktop/projects/Swings/source/library/... and all the other dirs...

这里的线索是:javac不像这个那样工作。您不能指定目录并期望它知道该做什么。您需要单独列出每个java文件,这意味着您需要一个非常长的命令行。

java生态系统中没有人使用命令行构建应用程序是有原因的。每个人都用maven或gradle代替。你也应该这样做。它将解决这个问题;您只需将源放在正确的位置,然后从那里找出maven / gradle。你想要多少包就有多少。

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

https://stackoverflow.com/questions/71906498

复制
相关文章

相似问题

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