![](/img/trans.png)
[英]How to add a jar file to an eclipse java project from command line?
[英]How to add a line in all java files in eclipse
我不确定这是否可行,但我有一个旧的java应用程序项目,其中包含1000多个java文件。 我正在尝试将log4j支持添加到需要我添加的应用程序中
public static Logger logger = Logger.getLogger(MyClass.class.getName());
在每个文件中。
我有什么方法可以使用eclipse执行操作。 我尝试过source->format
但是不允许我添加该行。 我是否必须打开每个文件并添加该行?
您可以在eclipse中使用模板 ,但在这种情况下,您需要编辑每个文件并添加它。
更新:
将以下内容保存在一些以扩展名“.xml”命名的文件中
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="true" context="java-members" deleted="false" description="adds the logger statement" enabled="true" name="logger">public static Logger logger = Logger.getLogger(${enclosing_type}.class.getName());</template></templates>
按CTRL + 3,键入 - “templates”并选择Templates- Java Editor,如下所示
从右侧导入菜单,如下所示
现在转到您的任何文件并在类文件中键入“logger”并执行CTRL +空格,快速辅助将显示“logger”模板,如下所示
并且您的日志记录将出现在您正在编辑的类中,如下所示
你可以以编程方式完成。 从所有.java的过滤器开始:
public class FileExtensionFilter implements FilenameFilter {
private Set<String> filteredExtensions;
public FileExtensionFilter() {
filteredExtensions = new HashSet<String>();
}
@Override
public boolean accept(File dir, String name) {
boolean accept = true;
for (String filteredExtension:filteredExtensions) {
accept = accept && !name.endsWith(filteredExtension);
}
return accept;
}
public void addFilteredExtension(String extension) {
filteredExtensions.add(extension);
}
}
然后,您可以使用递归方法查找该文件:
public Set<String> searchFileBasedOnExtension(File file) {
Set<String> extensions = new HashSet<String>();
if (file.isDirectory()) {
for (File f : file.listFiles(fileExtensionFilter)) {
extensions.addAll(checkForExtensions(f));
}
} else {
String extension = file.getName().substring(Math.max(file.getName().lastIndexOf('.'),0));
extensions.add(extension);
fileExtensionFilter.addFilteredExtension(extension);
}
return extensions;
}
然后根据您收到的集合,您可以迭代它,读取文件以找到添加“导入”的位置,并找到类名,并将其保存到变量中以替换每个文件,因为每个文件代表一个不同的阶级。
样品:
for (String s : setWithFileNames) {
// Use BufferedReader to read the file, save the content in a String, then look inside the String the classname and the first import position.
// Use bufferedWriter to re-write the file with the changes you made.
}
希望它能满足您的要求。 最好的祝福。
打开每个文件并添加此行将是乏味的。
我不确定Eclipse是否有这样的东西。
但我建议使用shell脚本或Java函数来执行此操作。
我知道这对你来说可能不是最好的解决方案。
希望这可以帮助。
如果你有notepad ++,你可以做到。 对使用正则表达式的目录使用查找替换功能。
所以以public class
开头的行需要被行替换,而另一行需要用日志语句替换。
另一个建议是使用AspectJ。 AspectJ是Java的扩展,允许您系统地为现有类编写额外的功能。 您首先需要安装AJDT(AspectJ开发工具)。 然后你需要创建一个这样的Aspect:
aspect LoggingAspect {
before (Object thiz) : execution(public * *(..)) && this(thiz) {
Logger logger = Logger.getLogger(thiz.getClass().getName());
logger.log("Something");
}
}
上面的方面将记录您编译的其中一个类的公共方法的每次执行。 你当然可以通过多种方式调整它。 记录是AspectJ可以做的最简单的事情之一。 沿着这条路走下去的好处是,您可以通过注释掉4行来轻松启用/禁用项目中的日志记录。
AspectJ的主要网站 。 AspectJ编程指南是开始使用AspectJ的好地方。
您可以运行以下命令在特定行号上添加任何行,只需提供文件夹名称,它将搜索所有子文件夹,文件扩展名为.java,并在特定位置添加行:
find <Folder Path> -name "*.java" -exec sed -i '1i<Text: You want to add>' {} \;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.