gpt4 book ai didi

java - 为什么java中传递给main方法的参数包含通配路径可以更改

转载 作者:行者123 更新时间:2023-12-01 11:51:45 26 4
gpt4 key购买 nike

在此处“搜索和研究”之后以及 http://docs.oracle.com/javase/tutorial/search.html ,但我找不到一个好的解决方案。

http://docs.oracle.com/javase/tutorial/getStarted/application/#MAIN

当传递的参数包含带有“*”的通配路径,例如“*.java”时,它们将被扩展或更改。

javac -encoding utf-8 Compiling.java
F:\Android\workspace\JavaTest\compiling>java -cp . Compiling *.java 22 *.class
args = [Compiling.java, Foo.java, 22, Compiling.class, Foo.class]

演示

    public class Compiling {
/**
* F:\Android\workspace\JavaTest\compiling>java -cp . Compiling *.java
* args = [Compiling.java, Foo.java]
*
* F:\Android\workspace\JavaTest\compiling>java -cp . Compiling 22 *.java
* args = [22, Compiling.java, Foo.java]
*
* F:\Android\workspace\JavaTest\compiling>java -cp . Compiling *.java 22
* args = [Compiling.java, Foo.java, 22]
*
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("args = " + Arrays.toString(args));
}
}

故事如下。

@set DX_BAT=%ANDROID_SDK%\build-tools\android-4.4W\dx.bat
cd /D %LocalProjectPath%
for /f "delims=" %%a in ('dir /b /ad %ModulesDirAtBinDir%') do (
call %DX_BAT% --dex --no-strict --verbose --output=assets\modules\%%a.jar %ModulesDirAtBinDir%%%a\*.class
)

当我调用 dex.bat 时,发现 dx 版本 1.70 中有一个 filenotfound 表达式,但它可以在 dx 版本 1.80 中使用。

java.lang.RuntimeException:bin\module_classes\com\android\module-xx*.class:找不到文件

我认为问题出在文件“lib/dx.jar”。不幸的是,在目录sdk\build-tools\18.1.1\lib中,它可以工作。

D:\PROGRA~2\Java\JDK18~1.0_2\bin\java.exe  -Xmx1024M -Xss1m -Djava.ext.dirs=lib\ -jar lib\dx.jar  --dex --no-strict --verbose --output F:\Android\workspace\AndroidProject\assets\modules\xx.jar F:\Android\workspace\AndroidProject\bin\module_classes\com\android\module-xx\*.class

事实上,在“F:\Android\sdk\build-tools\18.1.1\dx.bat”中:

REM Change current directory to where dx is, to avoid issues with directories
REM containing whitespaces.
cd /d %~dp0

当前目录已更改。而且我没有认真阅读异常。

1:https://plus.google.com/u/0/102826186191478166401/posts/PuVvwkn3nTw?pid=6120466408040851106&oid=102826186191478166401

2:https://lh4.googleusercontent.com/-yL8SUUHDGaU/VPBDxT78ZqI/AAAAAAAAABk/zuqg8glIKLw/w1118-h170-no/dx.jar.png

最佳答案

尝试下面的代码,你会发现操作系统已经做了一些事情。

#include<stdio.h>

int main(int argc, char** argv){
while(--argc >= 0){
printf("argv[%d] = %s\n", argc, argv[argc]);
}
return 0;
}
  1. 另存为 print_args.c。
  2. 执行“gcc -o print_command_arguments print_args.c”
  3. 在 Linux 上执行“./print_command_arguments *”或在 Windows 上执行“print_command_arguments *”。

第二个参数“*”将被扩展。

关于java - 为什么java中传递给main方法的参数包含通配路径可以更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28762638/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com