Tag: 调试

如何使用VIM / GVIM调试Java应用程序?

之前我问过这个问题( 任何好的教程,从eclipse到to-vim ) 从输入,我开始使用GVIM而不是Eclipse。 我添加了ctags ,我现在能够舒适地导航。 留给我的唯一问题是“调试”? 我试着搜索一些链接,找不到有用的链接? 如果有人使用或熟悉使用vim / Gvim进行Java调试,可以提供他们的输入/链接/教程,那将非常有帮助。

Java:尝试(扫描程序扫描=新扫描程序(System.in){}导致exception

使用try(Scanner scan = new Scanner(System.in)) { }正在导致 线程“main”java.util.NoSuchElementException中的exception 当我尝试调试它说 变量信息不可用,源代码编译时没有-g选项。 并显示以下代码 public Scanner(InputStream source) { this(new InputStreamReader(source), WHITESPACE_PATTERN); } 我使用此行的方法之一: protected String loginName(){ String username; String password; try (Scanner scan = new Scanner(System.in)) { // This line is causing the error. System.out.print(“Enter Username: “); username = scan.next(); System.out.print(“Enter Password: “); password = scan.next(); } if(getUsernamesList().contains(username)) […]

索引越界exceptionjava

所以错误信息是这样的: Exception in thread “main” java.lang.IndexOutOfBoundsException: Index: 0, Size: 0 at java.util.ArrayList.rangeCheck(Unknown Source) at java.util.ArrayList.get(Unknown Source) at FcfsScheduler.sortArrival(FcfsScheduler.java:77) at FcfsScheduler.computeSchedule(FcfsScheduler.java:30) at ScheduleDisks.main(ScheduleDisks.java:33) 用我的代码作为 public void sortArrival(List r) { int pointer = 0; int sProof = 0; while(true) { if(r.get(pointer).getArrivalTime()r.size()-2) { pointer=0; sProof=0; } if(sProof>=r.size()-2) { break; } } } 错误发生在 if(r.get(pointer).getArrivalTime()<r.get(pointer+1).getArrivalTime()) 但我认为在指针增加后,使用代码检查数组索引是否正常。 它是一个超出范围的数组exception还是别的什么? 通常,当它是数组时,错误是ArrayIndexOutOfBoundsException。 这里似乎有什么问题?

是否真的值得为实体类实现toString()

始终建议覆盖(实现)类的toString()方法。 Java API文档本身说:“建议所有子类都覆盖此方法。” 有效Java中的Bloch具有“始终覆盖toString”项。 只有傻瓜才与布洛赫相矛盾,对吧? 然而,我怀疑这个建议:是否真的值得为实体类实现toString() ? 我会尝试列出我的推理。 实体对象具有唯一标识; 即使两个entites具有相同的属性值,它也永远不会与另一个对象相同。 也就是说,(对于非null x ),以下不变量适用于实体类(根据定义): x.equals(y) == (x == y) toString()方法返回一个“文本表示”其对象的字符串(用Java API的话说)。 良好的表示捕获对象的基本要素,因此如果两个表示不同,则表示不同(非等效)对象的表示,相反,如果两个表示是等价的,则它们是等效对象的表示。 这表明以下对于良好表示的不变性(对于非空x , y ): x.toString().equals(y.toString()) == x.equals(y) 因此,对于实体,我们期望x.toString().equals(y.toString()) == (x == y) ,即每个实体对象应该具有唯一的文本表示, toString()返回。 某些实体类将具有唯一的名称或数字ID字段,因此它们的toString()方法可以返回包含该名称或数字ID的表示。 但通常, toString()方法无法访问此类字段。 如果没有实体的唯一字段, toString()可以做的最好的事情就是包含一个对于不同对象不太可能相同的字段。 但这正是System.identityHashCode()的要求,这是Object.toString()提供的。 因此对于没有数据成员的实体对象, Object.toString()是可以的,但对于大多数类,您希望将它们包含在文本表示中,对吧? 实际上,您希望包含所有这些:如果类型具有(非null)数据成员x ,您可能希望在表示中包含x.toString() 。 但这会对持有对其他实体的引用的数据成员产生问题:即哪些是关联 。 如果Person对象具有Person father数据成员,则天真实现将生成该人的家谱的片段,而不是Person本身。 如果存在双向关联,那么天真的实现将会递归,直到您获得堆栈溢出所以可能会跳过持有关联的数据成员? 但是有关Person husband和Person wife数据成员的价值型Marriage怎么样? 这些关联应该由Marriage.toString()报告。 […]

Mapreduce wordcount作业中找不到类的exception

我正在尝试在hadoop中运行wordcount作业。但总是得到一个类未找到exception。我发布了我写的类和我用来运行作业的命令 import java.io.IOException; import java.util.*; import org.apache.hadoop.fs.Path; import org.apache.hadoop.conf.*; import org.apache.hadoop.io.*; import org.apache.hadoop.mapreduce.*; import org.apache.hadoop.mapreduce.lib.input.FileInputFormat; import org.apache.hadoop.mapreduce.lib.input.TextInputFormat; import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat; import org.apache.hadoop.mapreduce.lib.output.TextOutputFormat; public class WordCount { public static class Map extends Mapper { private final static IntWritable one = new IntWritable(1); private Text word = new Text(); public void map(LongWritable key, Text value, Context context) throws […]

adb无法找到我的设备进行Android调试。 为什么?

我为Android Dev Phone 1安装了Windows USB Android SDK驱动程序 我启用了手机上的所有调试模式和内容。 它甚至说… USB调试连接。 当我输入adb设备时,它只显示我的模拟器,而不是我的手机。 它似乎不能将我的Android手机识别为adb设备 。 这是为什么?

使用Intellij在远程服务器上部署/调试Java代码

我想在远程服务器上运行我的java代码以获得更快的速度(服务器非常强大)。 我想要的是将我的Intellij连接到该远程服务器并运行我的代码。 但我仍想在我的本地机器(即我的笔记本电脑)上使用IntelliJ。 我在IntelliJ中找到了一个配置部分,它在Default Setting->Build-executation-deployment-> Deployment ,我可以设置远程服务器的地址和用户名和密码。 但我不知道接下来该做什么。

找出以编程方式抛出NullPointerException的变量

我知道我可以使用这些技术找出Java中的变量是否为null: if (var==null) – >工作太多了 try { … } catch (NullPointerException e) { …} – >它告诉我什么行抛出exception 使用调试器 – >手动,太慢了 考虑以下代码行: if (this.superSL.items.get(name).getSource().compareTo(VIsualShoppingList.Source_EXTRA)==0) { 我想知道是否有一种通用的方法来以编程方式找出哪个变量(不仅仅是行)在某个代码区域中抛出NullPointerException。 在这个例子中,知道这一点

调试时未找到Eclipse“类文件编辑器”源

我有一个Java项目,我正在逐步完成,当我使用外部库,例如jdom.jar我最终踩到了“类文件编辑器”。 我真的不在乎这些库中的什么我只是用它来为我自己的代码处理事情。 无论如何都要绕过这个突然出现? 每次我不小心踏入一个我知道没有源代码的类文件时,这是非常令人沮丧的一步,我完全没有意义。 图片如下:

Eclipse – 显示完整的调用堆栈(比如它在调试器中遇到断点)而没有放入断点?

我正在使用一个对我来说不熟悉的遗留Java应用程序,因此有一种方法可以弄清楚它是如何工作的,并且更容易找到事情,我认为可以在执行操作后获得完整的堆栈跟踪,从而能够根据特定的UI动作查看正在使用的类。 我以为这在调试器中是可能的,但它似乎只有在我插入一个断点时才有效,在这种情况下,部分目的是为了让我不必知道被调用的是什么才能插入断点第一(因为这有助于告诉我)。 如果这是一个基本问题我道歉,我已经搜索了这个,但我找不到正确的答案。