Adrninistrator / java-callgraph2

Programs for producing static call graphs for Java programs.
Apache License 2.0
184 stars 66 forks source link

新手村新手,环境问题 #31

Open Dhaizei opened 1 year ago

Dhaizei commented 1 year ago

目前在ubuntu下,有gradle环境和openjdk version "16.0.1" 但是第一步编译就把我拦下来了, 编译: gradlew jar 出错:

Command 'gradlew' not found, did you mean:

command 'gradle' from deb gradle (4.4.1-13)

Try: apt install

我就用 ./gradlew jar

然后就 Starting a Gradle Daemon (subsequent builds will be faster)

FAILURE: Build failed with an exception.

貌似是安装java环境的版本不支持,我换了11 sudo apt install openjdk-11-jdk 这个不行,所以我该怎么办啊? 求贴主,帮我解答一下

Adrninistrator commented 1 year ago

试一下用jdk8来编译,更高版本的可能需要升级gradle的版本了

Dhaizei commented 1 year ago

试了不行,欸我换了jdk8最低版本。gradle 是7.4.2-0ubuntu1

Dhaizei commented 1 year ago

jdk18我也试了……

Adrninistrator commented 1 year ago

gradle用6.x版本试一下

Dhaizei commented 1 year ago

好,谢谢贴主,我去试试

Dhaizei commented 1 year ago

我装了gradle6.5的版本,还是报之前的错误 从60到62,之前更新java环境的时候也是报的这个错误 java.lang.IllegalArgumentException: Unsupported class file major version 62

Adrninistrator commented 1 year ago

用JDK8+Gradle 6.x应该是没有问题的,需要检查一下实际使用的JDK版本

Dhaizei commented 1 year ago

好的,谢谢啦,我再去试试

Dhaizei commented 1 year ago

最后 解决了 ~谢谢

Adrninistrator commented 1 year ago

不客气的,解决了就好,后面在文档里把需要的环境说明写详细一点

Dhaizei commented 1 year ago

贴主大大,我又遇到问题了,目前我运行到这一步了: image

我看了配置文件_javacg_config/config.properties 但是没有找到输入文件目录的变量

然后我仔细看了看readme,相关输入目录的描述是下面的: out build/libs/a.jar build/libs/a.jar build/libs/b.jar out build/libs/a.jar build/libs/b.jar

我不理解,out是什么

Adrninistrator commented 1 year ago

out是idea生成class的目录

Dhaizei commented 1 year ago

那我该怎么解析一个jar文件呢,实在是我没看懂怎么执行 4D4F81AB

Adrninistrator commented 1 year ago

jar_dir.properties里指定jar包路径就可以

Adrninistrator commented 1 year ago

用的配置文件和以前不一样了,文档还没来得及仔细改

Dhaizei commented 1 year ago

比如:jar_dir.properties = /root/data/java-callgraph2/jar_output_dir/jar/run_javacg2.jar 这个?

Dhaizei commented 1 year ago

会了,谢谢 直接将下面的路径贴到jar_dir.properties里面就行了 /root/data/java-callgraph2/jar_output_dir/jar/run_javacg2.jar

Dhaizei commented 1 year ago

还有个问题麻烦您了: 这是我的运行文件/root/data/java-callgraph2/build/libs 就是咱们git仓库自带的文件,为什么我解析后的文件是 image 没有z找到调用关系的文件。如果可以的话,有测试样例吗

Adrninistrator commented 1 year ago

如果指定目录的话,目录里要有需要解析的jar包 如果有的话,看一下method_call.txt文件,如果内容是空的话,检查一下libs-javacg_merged.jar文件里有没有指定的jar包

Dhaizei commented 1 year ago

比如下面的是什么意思呢?我在您的输出文件格式内容看了,也没理解下面的意思 1 copy.javassist.bytecode.SignatureAttribute$TypeVariable:(java.lang.String,int,int) (SPE)copy.javassist.bytecode.SignatureAttribute$ObjectType:() 732 t void 2 2 2 copy.javassist.bytecode.SignatureAttribute$TypeVariable:(java.lang.String,int,int) (VIR)java.lang.String:substring(int,int) 733 v java.lang.String 2 - 3 copy.javassist.bytecode.SignatureAttribute$TypeVariable:(java.lang.String) (SPE)copy.javassist.bytecode.SignatureAttribute$ObjectType:() 741 t void 2 2

Adrninistrator commented 1 year ago

上面的文件代表前面的方法调用了后面的方法,文件每一列的说明我增加一下

Adrninistrator commented 1 year ago

增加了文档 https://github.com/Adrninistrator/java-callgraph2/blob/main/docs