相关疑难解决方法(0)

JDK tools.jar作为maven依赖

我想把JDK tools.jar作为编译依赖项.我找到了一些示例,表明要使用systemPath属性,如下所示:

<dependency>
  <groupId>com.sun</groupId>
  <artifactId>tools</artifactId>
  <scope>system</scope>
  <systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
Run Code Online (Sandbox Code Playgroud)

问题是Mac OS X的路径不正确(但对Windows和Linux来说是正确的).对于它,正确的路径是$ {java.home} /../ Classes/classes.jar.

我正在寻找一种方法来定义maven属性,这样如果系统被检测为Mac Os X,则值设置为$ {java.home} /../ Classes/classes.jar,否则设置为$ {java.home} /../ lib/tools.jar(就像可以用ANT一样).有人有想法吗?

java maven-2 tools.jar

73
推荐指数
5
解决办法
8万
查看次数

如何在Java中找到调用给定方法的所有方法?

我需要获取Java中感兴趣的方法的所有调用方法的列表.有没有可以帮助我的工具?

编辑:我忘了提到我需要从程序中执行此操作.我使用Java Pathfinder,我想运行它调用我感兴趣的方法的所有方法.

java

32
推荐指数
4
解决办法
2万
查看次数

在java的Annotation Processor中发现methodinvocation的类

我正在为我们的构建系统编写一些工具,以对属于包含某些注释的类的方法强制执行一些严格的调用约定.

我正在使用编译器树API ...

我想知道的是当遍历'tree'时,你怎么能告诉MethodInvocation的类/接口的类型.

我将TreePathScanner子类化为:

@Override
public Object visitMethodInvocation(MethodInvocationTree node, Trees trees) {

}
Run Code Online (Sandbox Code Playgroud)

我希望有一种方法可以告诉您尝试调用该方法的类(或接口)的类型.我是以错误的方式来做这件事的吗?谢谢你的任何想法......

java preprocessor annotations javac

6
推荐指数
1
解决办法
2441
查看次数

如何从ExecutableElement获取方法主体

在我的帮助下,AbstractProcessor我可以从带有某些注释的类中获取所有方法,我创建了:

List<? extends Element> allElements = processingEnv.getElementUtils().getAllMembers((TypeElement) bean);
List<ExecutableElement> methods = ElementFilter.methodsIn(allElements);
Run Code Online (Sandbox Code Playgroud)

是否可以获取方法的主体ExecutableElement?该API似乎只处理签名和修饰符。

我可能会使用以下答案的一些变体:https : //stackoverflow.com/a/34568708/6095334,以从专有* .sun。**包访问类,例如com.sun.tools.javac.tree.JCTree$MethodTree

MethodTree methodTree = trees.getTree(executableElement);
Run Code Online (Sandbox Code Playgroud)

这样,AbstractProcessor的init()方法treescom.sun.source.util.Treesset 的实例在哪里:trees = Trees.instance(processingEnv);
但是这些类带有警告:这不是任何受支持的API的一部分。如果编写依赖于此的代码,则后果自负。该代码及其内部接口如有更改或删除,恕不另行通知。

我希望可以从更通用的注释处理框架中访问带注释的方法的主体。

java methods annotation-processing

5
推荐指数
0
解决办法
1014
查看次数