我想从命令行为java项目创建一个调用图.我已经探索了几个项目,每次都达不到我想要的目标(无论是我的理解还是功能).关于如何做到这一点的一些简单指南将是很好的,另一个目标是获得该图的文本表示.
这是我尝试过的:
呼叫图:https://github.com/gousiosg/java-callgraph
这给了我想要的文本输出,但我找不到一种方法(在查看文档一段时间后),将其转换为可视(图像文件)图形输出.
烟灰:http://sable.github.io/soot/
花了很多时间查看SOOT文档,这似乎很难遵循,我设法让SOOT创建字节码.但是,我找不到有关如何从中创建调用图的任何指南.我只在主页上看到它可以执行此操作,我从谷歌搜索中获得了几个电子邮件对话,所有这些只是没有答案的问题.我正在使用命令的每晚构建:
java -cp soot-trunk.jar soot.Main -cp . -pp HelloWorld
Run Code Online (Sandbox Code Playgroud)
HelloWorld是我的java文件的名称,我得到一个.class文件的输出,但我看不到如何获得实际的调用图.这是在遵循指南之后:https://github.com/Sable/soot/wiki/Running-Soot.当我关注关于可视化的链接时,它们似乎是断开的链接,然后重定向回主页.我可以在命令行页面上看到有关使用-cg标志的一些信息,但无法使任何工作 - 我只是得到一个选项解析错误,建议一个无效的参数:https://ssebuild.cased.de/nightly /soot/doc/soot_options.htm#phase_5
搜索stackoverflow - 现有答案 我已经看过几个类似的问题,例如:Java调用图的静态分析 然而,答案只是说"使用soot",或"使用call-graph",我一直在尝试这些没有任何运气 - 虽然我最接近调用图,因为我有文本输出.
我看到一些基于GUI的软件和eclipse插件声称可以创建调用图,但我试图从命令行开始工作.
任何帮助真的很感激,一个指南,或一组命令与调用图或Soot,或其他程序真的会有所帮助.可能值得为他们的文档提交任何简短的教程,因为似乎有更多的问题而不是搜索时的答案.
作为参考,我目前正在尝试使用下面一个非常简单的类:
public class HelloWorld {
public static void main(String[] args) {
foo();
}
public static void foo(){
System.out.println("Hello World");
}
}
Run Code Online (Sandbox Code Playgroud) 我已经尝试了一段时间并相信我非常接近这一点,但我对Unix相当新,所以一直觉得这很困难.
我有一个文件夹,包含许多文件夹,其中一些文件夹中包含zip文件,有些文件夹没有.我试图解压缩任何子目录中的所有zip文件.
例如,我有:
文件/ A/something.java
文件/ B/somezipfile.zip
文件/ C/someotherfile.zip
文件/ d/AnotherZipFile.zip
我想解压缩它们(假设zips包含.java文件),得到如下结果:files/A/something.java
文件/ B/javafile.java
文件/ C/someotherfilefromzip.java
文件/ d/Anotherfile.java
我不介意ZIP文件在解压缩后是保留还是删除,也不错.
到目前为止我尝试过的.
1)我预计我可以使用管道,我是新手,像这样:
find . -name *.zip | unzip
Run Code Online (Sandbox Code Playgroud)
这不起作用.
2)我花了一些时间搜索,我在网上使用解决方案的最接近的是:
find . -name '*.zip' -exec unzip '{}' ';'
Run Code Online (Sandbox Code Playgroud)
解压缩,但将它们解压缩到当前工作目录中,我希望它们解压缩到位.我也不理解这个我想要学习的命令.
任何帮助深表感谢.
谢谢,
在AWS上,您可以创建自动扩展策略,该策略可根据"每个目标的应用程序负载均衡器请求计数"进行扩展.
像这样:
这个实例的最小值为1,最大值为5.它的目标是为我的ElbTargetGroup实现10个"每个目标的请求数".
我的问题是,什么是"每个目标的应用程序负载均衡器请求数"?
这是:
这里的文档只是说:
目标组中每个目标收到的平均请求数.您必须使用TargetGroup维度指定目标组.
此外,它必须超过该目标才能开始创建新实例?我问的主要原因是我向此负载均衡器发送了许多请求,但未触发扩展事件.
这应该是相对微不足道的,但我已经尝试了一段时间没有太多运气.我有一个目录,里面有很多目录,每个目录都有自己的结构和文件.
我希望在工作目录下的任何目录中找到所有.java文件,并将它们重命名为特定名称.例如,我想将所有java文件命名为"test.java".
如果目录结构是:
./files/abc/src/abc.java
./files/eee/src/foo.java
./files/roo/src/jam.java
Run Code Online (Sandbox Code Playgroud)
我想简单地重命名为:
./files/abc/src/test.java
./files/eee/src/test.java
./files/roo/src/test.java
Run Code Online (Sandbox Code Playgroud)
当然,我的部分问题是路径可能有空格.我不需要担心重命名文件中的类或任何内容,只需要文件名.
如果目录中有超过1个.java文件,我不介意它是否被覆盖或者是否给出了选择要做的提示(要么是好的,每个目录中不可能有超过1个.
我尝试过的:
看着mv并找到,但是当我把它们管在一起时,我似乎做错了,我想确保将它们保留在当前位置并重命名,而不是移动.
谢谢,我真的很感激任何帮助.
我有一组JUnit测试,它们在Java程序上调用main方法,传入args并检查输出.没关系.
但是,如果我测试的程序具有被更改的静态值,则它们在测试之间将保持不变.这会导致问题.我无法控制正在测试的程序是什么,或者用于静态字段的名称.
我如何确保我的单元测试运行干净,就好像它是从头开始程序,而不保留那些静态字段.有没有办法以某种方式重置它们?
如果没有,我将不得不启动一个运行该程序的新进程,然后检查输出等,但这似乎有点矫枉过正.
编辑 - 请注意我无法控制单元测试正在测试的代码 - 我无法更改其字段名称,不幸的是,我也不会知道他们的字段名称.我想,如果没有开始新的流程,这是不可能的?
我正在开发一个开源项目Storj.我正在编写一个连接到Node.js websocket后端的Java客户端.客户使用Tyrus.沟通应如下:
我遇到问题,因为@OnMessage永远不会被调用.我尝试使用一个简单的javascript客户端在线访问相同的URL并使用相同的标记:https: //www.websocket.org/echo.html
我确实得到了一个回应,它告诉我Java项目有问题.
在能够下载文件之前,在早期阶段,我可以毫无问题地上传文件.但是,该步骤不需要调用@OnMessage(它只是上传文件然后服务器与消息断开连接),所以我不确定我的@OnMessage是否正常工作.
以下是Websocket的相关代码(也可在Github上获得):https: //github.com/NutterzUK/storj-java-bridge-client/blob/master/storj-client/src/main/java/storj/io /client/websockets/WebsocketFileRetriever.java
package storj.io.client.websockets;
import com.google.gson.Gson;
import storj.io.restclient.model.FilePointer;
import javax.websocket.*;
import java.io.File;
import java.io.IOException;
import java.nio.ByteBuffer;
import java.util.concurrent.CountDownLatch;
import java.util.logging.Logger;
/**
* Created by steve on 12/07/2016.
*/
@ClientEndpoint
public class WebsocketFileRetriever {
private Logger logger = Logger.getLogger(this.getClass().getName());
private Gson gson = new Gson();
private FilePointer filePointer;
private File outputFile;
private AuthorizationModel authModel;
private CountDownLatch latch;
public WebsocketFileRetriever(FilePointer filePointer, File outputFile, CountDownLatch latch){
this.filePointer = …Run Code Online (Sandbox Code Playgroud) 我最近在我的pom.xml中添加了hibernate,它运行正常.然而,日志记录是令人恼火的,我不知道如何关闭它或限制它的水平(我甚至不知道它包括什么来开始所有这些日志记录).我是新手,对于maven和冬眠.
这是我的pom.xml依赖项:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.hibernate.common</groupId>
<artifactId>hibernate-commons-annotations</artifactId>
<version>4.0.1.Final</version>
<classifier>tests</classifier>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.10</version>
</dependency>
</dependencies>
Run Code Online (Sandbox Code Playgroud)
日志开头如下:
21:17:15.115 [main] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider
21:17:15.130 [main] DEBUG org.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BooleanType@ba4d54
21:17:15.130 [main] DEBUG org.hibernate.type.BasicTypeRegistry - Adding type registration boolean -> org.hibernate.type.BooleanType@ba4d54
21:17:15.130 [main] DEBUG org.hibernate.type.BasicTypeRegistry - Adding type registration java.lang.Boolean -> org.hibernate.type.BooleanType@ba4d54
Run Code Online (Sandbox Code Playgroud)
我已经尝试将log4j.properties文件添加到我的资源中,它似乎没有改变任何东西.我也尝试过simplelog.properties(关注其他没有帮助的SO帖子).我有点卡在这里,帮助真的很感激.理想情况下,我只想将记录器设置为关闭,或只是设置mysql查询.
这是依赖树:
[INFO] org.springframework:gs-rest-service:jar:0.1.0
[INFO] +- org.springframework.boot:spring-boot-starter-web:jar:1.1.10.RELEASE:compile
[INFO] | +- org.springframework.boot:spring-boot-starter:jar:1.1.10.RELEASE:compile …Run Code Online (Sandbox Code Playgroud) 如果我以完全错误的方式解决这个问题,请告诉我,但如果我解释这个问题,我希望有人可以帮助我,或指出我正确的方向.
我需要一个可以移动的自定义视图,我希望在我的一个主要活动中将此视图放在我的relativeLayout的一部分上.我按照移动教程(下面的链接)创建了一个updateThread和一个扩展SurfaceView的类. http://mobile.tutsplus.com/tutorials/android/android-sdk-achieving-movement/
这有效,我可以把它放在我的应用程序中.当我想在我的布局中将其放在不同的活动上时,问题就来了.我设法将视图放入,但它显示全屏,在其他项目后面.我的部分问题是,它的大小取决于屏幕的大小等.nelativelayout使用了大量的图像,Android将选择所需的正确大小的图像.对于SurfaceView,如何设置依赖于手机的大小?
现在,我有相对布局正确显示自定义视图需要去的图像.图像显示正确的大小,只是我需要显示的静态版本.你知道如何将我的自定义视图移动到这个空间吗?
如果你需要任何代码,我可以发布任何代码,我真的很难与这个.即使你可以指出我正确的方向,或者让我知道我是否应该使用表面视图?视图只需要显示一些图像在屏幕上滑动,这就是全部(在主要布局的那一部分内)
非常感谢提前
我有一组包含1000多个条目的数据.我可以使用自动过滤器过滤这些.在底部,我有一些简单的公式,例如AVERAGE()和QUARTILE().我想要实现的是,当我过滤数据时,AVERAGE的结果应该改变,因此他们应该只考虑可见数据.
我一直在搜索谷歌和这里,但似乎找不到这样的东西,除了使用"小计",但这不是我想要使用的公式.
这可能吗?谢谢,
我找不到任何说明更新需要多长时间的内容.我发布了一个应用程序,它可以在那里使用.当我在google play上访问我的开发者控制台时,它说它有0次下载.我知道这不是真的,因为我收到了一些错误报告,而且我还在我自己的几台设备上下载了它.你知道更新需要多长时间吗?有没有人从经验中知道?这是我的论文所以我真的可以用一些数字来确保时间准确.
谢谢,
java ×4
android ×2
unix ×2
amazon-ec2 ×1
autoscaling ×1
bash ×1
call-graph ×1
custom-view ×1
excel ×1
filter ×1
find ×1
formula ×1
hibernate ×1
junit ×1
log4j ×1
maven ×1
mv ×1
node.js ×1
rename ×1
shell ×1
surfaceview ×1
tyrus ×1
unzip ×1
websocket ×1
zip ×1