我想在任何现有的#includes之前用额外的include指令更新大量的C++源文件.对于这种任务,我通常使用带有sed的小bash脚本来重写文件.
如何sed更换文件中第一次出现的字符串而不是替换每次出现?
如果我使用
sed s/#include/#include "newfile.h"\n#include/
Run Code Online (Sandbox Code Playgroud)
它取代了所有#includes.
也欢迎提供相同建议的替代建议.
我正在使用javax.tools包(JDK 1.7)中的JavaCompiler来动态编译一些东西,如下所示:
compiler.run(null, null, "-cp", paths, "path/to/my/file.java");
Run Code Online (Sandbox Code Playgroud)
它可以工作,但我想在内存中完成所有操作(例如,传递带代码的字符串,而不是源文件,并获取字节代码而不是.class文件).我发现扩展InputStream和OutputStream参数是没有用的,因为它可能与控制台中的相同.你知道一种让run方法像这样工作的方法吗?或者您是否知道使用该getTask()方法确认的方法?(扩展FileManager看起来很简单但不是那么容易:)
我正在尝试编写程序,但是我收到了这个编译错误:
Main.java:1: error: class WeatherArray is public, should be declared in a file named WeatherArray.java
public class WeatherArray {
^
1 error
Run Code Online (Sandbox Code Playgroud)
我检查了我的文件名,我的公共类与我的.java文件相同.
我怎样才能解决这个问题?
这是我的代码:
public class WeatherArray {
public static void main(String[] args) {
// ...
}
}
Run Code Online (Sandbox Code Playgroud) 我在这做错了什么:
class Helo {
// main: generate some simple output
public static void main (String[] args) {
System.out.println ("Hello, world."); // print one line
System.out.println ("How are you?"); // print another
}
}
Run Code Online (Sandbox Code Playgroud)
当我进入终端时,我做:
cd ~
javac Atempt2.java (//that's the file name)
java Atempt2
Run Code Online (Sandbox Code Playgroud)
然后它给了我这个错误信息:
Exception in thread "main" java.lang.NoClassDefFoundError: Atempt2
Run Code Online (Sandbox Code Playgroud)
总而言之,这就是我所做的和所发生的事情:
david-allenders-macbook-pro:~ davidallender$ cd ~
david-allenders-macbook-pro:~ davidallender$ javac Atempt2.java
david-allenders-macbook-pro:~ davidallender$ java Atempt2
Exception in thread "main" java.lang.NoClassDefFoundError: Atempt2
david-allenders-macbook-pro:~ davidallender$
Run Code Online (Sandbox Code Playgroud)
我是新手,所以请以非常简单的方式解释一下.
谢谢.