我需要能够使用Java运行.mp3文件,我试过这个,但无济于事:
Process process = new ProcessBuilder("C:\\Users\\<removed>\\Desktop\\Music\\Cash Cash\\Overtime.mp3")
然后跑
process.start();
Run Code Online (Sandbox Code Playgroud)
但是,它抛出了这个错误:
java.io.IOException: Cannot run program "C:\Users\<removed>\Desktop\Music\Cash Cash\Overtime.mp3": CreateProcess error=193, %1 is not a valid Win32 application
at java.lang.ProcessBuilder.start(Unknown Source)
at com.newgarbo.music.Mooseec.main(Mooseec.java:50)
Caused by: java.io.IOException: CreateProcess error=193, %1 is not a valid Win32 application
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(Unknown Source)
at java.lang.ProcessImpl.start(Unknown Source)
... 2 more
Run Code Online (Sandbox Code Playgroud)
我认为这当然是因为a Process只适用于可执行文件/ jar,如果是,那么有人可以告诉我一种运行这些文件的方法吗?^ _ ^
我最近制作了一个带有几个私有变量的Utilities类,我需要确保即使有人尝试使用反射也不会改变.
所以我想知道,有没有办法让变量免于反射?
正如标题所示,使用它有什么好处:
int i;
for (i = 0; i < 4; i++){
<do stuff>
}
for (i = 0; i < 7; i++){
<do other stuff>
}
Run Code Online (Sandbox Code Playgroud)
而不是这个:
for (int i = 0; i < 4; i++){
<do stuff>
}
for (int i = 0; i < 7; i++){
<do other stuff>
}
Run Code Online (Sandbox Code Playgroud)
换句话说,没有为每个循环声明另一个变量有什么好处吗?
我认为存储它们需要的内存较少,但它们都会在方法结束时被废弃,所以为什么这很重要?(或GC只会摆脱它们)
我目前有一个 FernFlower 的工作设置,就像这样;
我有fernflower.jar一个fern.bat文件,其内容是:
title FernFlower
java -jar fernflower.jar -dgs=1 -ren=1 C:\Users\bernhardkiv\Desktop\test\test-obf.jar C:\Users\bernhardkiv\Desktop\test\src
Run Code Online (Sandbox Code Playgroud)
并且该参数-ren 1使得名称少于 3 个字符(或类似名称)的任何方法和字段都重命名为func_blahor field_blah(相应地,方法获取func_名称,字段获取field_名称。
在 fernflower 的自述文件中有这一节:
5. Renaming identifiers
Some obfuscators give classes and their member elements short, meaningless and above all
ambiguous names. Recompiling of such code leads to a great number of conflicts. Therefore it is
advisable to let the decompiler rename elements in its turn, ensuring uniqueness of each …Run Code Online (Sandbox Code Playgroud) 我需要找出一个正则表达式(Pattern)才能在双引号之间获取字符.
这有点难以解释,但这就是我想要的:
如果我通过所述表达式运行:
say("ex" + "ex2", "ex3");
Run Code Online (Sandbox Code Playgroud)
然后我将能够获得三场比赛,
"ex", "ex2", and "ex3"
Run Code Online (Sandbox Code Playgroud)
一切都在他们自己的弦乐.
我已经尝试过这个表达式:
Pattern.compile("\\\"(.*)\\\"");
Run Code Online (Sandbox Code Playgroud)
但不是给我三个不同的.group()S,我得到一个.group是"ex", "ex2", and "ex3"
那么有谁知道一个表达式给我我想要的输出?