精华内容
下载资源
问答
  • 简介 Arthas官方安装教程:...但他能帮助你简单的标记当前执行方法的类实体 CLASS 执行的类名 METHOD 执行的方法名 查看监控隧道详细信息 tt -i 1005 1005是自己隧道编号 得到报错行数后可进行查看代码解决问题!

    简介

    Arthas官方安装教程:https://arthas.aliyun.com/doc/quick-start.html

    tt

    • 命令参数解析

      • -t

        tt 命令有很多个主参数,-t 就是其中之一。这个参数的表明希望记录下类 *Test 的 print 方法的每次执行情况。

      • -n 3

        当你执行一个调用量不高的方法时可能你还能有足够的时间用 CTRL+C 中断 tt 命令记录的过程,但如果遇到调用量非常大的方法,瞬间就能将你的 JVM 内存撑爆。

        此时你可以通过 -n 参数指定你需要记录的次数,当达到记录次数时 Arthas 会主动中断tt命令的记录过程,避免人工操作无法停止的情况。

    方法执行数据的时空隧道,记录下指定方法每次调用的入参和返回信息,并能对这些不同的时间下调用进行观测

    watch 虽然很方便和灵活,但需要提前想清楚观察表达式的拼写,这对排查问题而言要求太高,因为很多时候我们并不清楚问题出自于何方,只能靠蛛丝马迹进行猜测。

    这个时候如果能记录下当时方法调用的所有入参和返回值、抛出的异常会对整个问题的思考与判断非常有帮助。

    于是乎,TimeTunnel 命令就诞生了。

    选择监控的方法(类路径 方法名称)

    tt -t io.terminus.doctor.move.service.DoctorImportDataService importStaff

    表格字段字段解释
    INDEX时间片段记录编号,每一个编号代表着一次调用,后续tt还有很多命令都是基于此编号指定记录操作,非常重要。
    TIMESTAMP方法执行的本机时间,记录了这个时间片段所发生的本机时间
    COST(ms)方法执行的耗时
    IS-RET方法是否以正常返回的形式结束
    IS-EXP方法是否以抛异常的形式结束
    OBJECT执行对象的hashCode(),注意,曾经有人误认为是对象在JVM中的内存地址,但很遗憾他不是。但他能帮助你简单的标记当前执行方法的类实体
    CLASS执行的类名
    METHOD执行的方法名

    查看监控隧道详细信息

    tt -i 1005

    1005是自己隧道编号

    得到报错行数后可进行查看代码解决问题!

    展开全文
  • try(){ }catch(Exception e){ ...在catch中打出完整错误日志,包括Exception类型和报错行数 方法:在catch块中加入代码 ByteArrayOutputStream baos = new ByteArrayOutputStream();  e.printStackTrace(new

    try(){

    }catch(Exception e){

    }            

    在catch中打出完整错误日志,包括Exception类型和报错行数

    方法:在catch块中加入代码



    1)ByteArrayOutputStream baos = new ByteArrayOutputStream();  

                e.printStackTrace(new PrintStream(baos));  
                String exception = baos.toString();  

                System.out.println("baos:" + exception);  


    2)logger.error("",e);

    展开全文
  • catch (Exception e) { StackTraceElement stackTraceElement= e.getStackTrace()[0];// 得到异常棧的首个元素 loggerException.error(String.format("seqid=%s,Exception=%s,getLineNumber=%s", seqId, ...
    catch (Exception e) {
        StackTraceElement stackTraceElement= e.getStackTrace()[0];// 得到异常棧的首个元素
        loggerException.error(String.format("seqid=%s,Exception=%s,getLineNumber=%s", seqId,
    		e.toString().replaceAll("\n", "|"),stackTraceElement.getLineNumber()));
    }

     

    展开全文
  • 统计java行数和jar包中代码行数
    自己写了一个简单的小工具,统计一下指定项目路径下java行数和指定路径下jar包中.class 文件的代码行数。
    具体内容如下:
    1:统计指定目录下所有的*.java 文件的代码行数,文件为JavaTotal.java(可单独运行);
     
    
     
    
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.File;
    import java.io.FileReader;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.PrintWriter;
    import java.util.ArrayList;
    import java.util.List;
    /**
     * 统计指定项目的目录下的*.java代码行数
     * @author aflyun
     * @date 2016.02.16
     * @version 1.0
     */
    public class JavaTotal {
    
    	//项目java文件所在目录
    	public static String javaPath = "D:/KuYuPrograms/tclshop/src/";
    	//统计代码行数
    	public static Integer countCode = 0;
    	
    	public static int runJavaTotal(){
    		try {
    			File filetxtPath = new File("D:/javaFileCount.txt");//输出要统计的文件信息
    			PrintWriter pw = new PrintWriter(new FileWriter(filetxtPath));
    			
    			List<File> list = total(javaPath);
    			for (File file : list) {
    				String javaName = file.getAbsolutePath().replace("\\", "/");
    				if(javaName.endsWith(".java")){
    					pw.println(javaName);
    				}
    			}
    			pw.println("总共java文件数量 :" + list.size());
    			pw.close();
    			System.err.println("java文件数量:"+list.size());
    			countJavaLine(list);
    			System.err.println("java中总代码行数:" + countCode);
    			
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    		
    		return countCode;
    	}
    	/**
    	 * 获取所有的文件
    	 * @param path 获取文件的路径
    	 * @return
    	 */
    	public static List<File> total(String path){
    		List<File> fileList = null;
    		try {
    			fileList = new ArrayList<File>();
    			File filePath = new File(path);
    			File[] files = filePath.listFiles();//listFiles能够获取当前文件夹下的所有文件和文件夹
    			for (File file : files) {
    				if(file.isFile() && file.getName().endsWith(".java")){
    					fileList.add(file);
    				}else {
    					fileList.addAll(fileList.size(), total(file.getPath()));
    				}
    			}
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    		
    		return fileList;
    	}
    	
    	/**
    	 * 统计项目中java代码的行数
    	 * @param listFile 文件的集合
    	 */
    	public static void countJavaLine(List<File> listFile){
    		try {
    			for (File file : listFile) {
    				if(file.getName().endsWith(".java")){
    					
    					FileReader fr = new FileReader(file);
    					BufferedReader br = new BufferedReader(fr);
    					String line = "";
    					while((line = br.readLine()) != null){
    						countCode ++;
    					}
    				}
    			}
    		} catch (Exception e) {
    			System.err.println("统计java代码行数出错!");
    		}
    		
    	}
    	
    //==========================================================================================//
    	public static void main(String[] args) throws IOException {
    
    		long start = System.nanoTime();
    		runJavaTotal();
    		long end = System.nanoTime();
    		System.out.print("cost: " + (end - start)/1e9 + " seconds");
    	}
    }
    </span>

    2:统计指定目录下所有的*.jar 包中*.class 文件的代码行数,文件为 JarTotal.java(可单独运行)

    package com.dufy.test;
    
    import java.io.BufferedReader;
    import java.io.File;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.URL;
    import java.util.Enumeration;
    import java.util.HashSet;
    import java.util.Set;
    import java.util.jar.JarEntry;
    import java.util.jar.JarFile;
    /**
     * 统计指定路径下面jar包文件中所有*.class 文件的代码行数
     * @author aflyun
     * @date 2016.02.16
     * @version 1.0
     */
    public class JarTotal {
    
    	//jar包存放的仓库位置
    	public static String jarPath = "D:/KuYuPrograms/repository/com/aebiz"; 
    	//存放所有的jar的包路径和名称
    	public static Set<String> jarList = new HashSet<String>();
    	//统计jar包总代码行数
    	public static int countCode = 0;
    	
    	public static int runJarTotal() {
    		try {
    			File filetxtPath = new File("D:/jarFileCount.txt");//输出要统计的文件信息
    			PrintWriter pw = new PrintWriter(new FileWriter(filetxtPath));
    			File file = new File(jarPath);
    				findAllJarFiles(file);
    			for (String jarName : jarList) {
    				pw.println(jarName); //将jar文件写入txt中
    				Set<String> findAllJarClassfiles = findAllJarClassfiles(jarName);
    				for (String jarClassFileName : findAllJarClassfiles) {
    						countJarLine(jarName,jarClassFileName);
    				}
    			}
    			pw.println("总共jar文件数量 :" + jarList.size());
    			pw.close();
    			System.err.println("jar包文件数量 :  "+ jarList.size());
    			System.err.println("jar包中总代码行数 :  "+ countCode);
    			
    		} catch (Exception e) {
    			// TODO: handle exception
    		}
    		
    		return countCode;
    	}
    	
    	/**
    	 * 遍历获取所有的jar包文件路径和名称
    	 * @param dir 目标路径
    	 */
    	 public static void findAllJarFiles(File dir) {
    		 try {
    			 //获取当前文件夹下的所有文件和文件夹
    			 File[] files = dir.listFiles();
    			 for(int i = 0; i < files.length; i++){
    				 // System.out.println(fs[i].getAbsolutePath());
    				  String jspPath = files[i].getAbsolutePath().replace("\\", "/");
    				  if(jspPath.endsWith(".jar")){
    					  //System.out.println(jspPath);
    					  jarList.add(jspPath);
    				  }
    				  //如果是文件夹,递归
    				  if(files[i].isDirectory()){
    					  findAllJarFiles(files[i]);
    				  }
    				
    			 }
    		} catch (Exception e) {
    			System.err.println("获取所有的jar包路径和名称出错!");
    		}
    		
    	 }
    	 
    	/**
    	 * 获取jar包目录下所有的class文件
    	 * @param jarName jar包的路径和名称
    	 * @return  返回对应jar包下所有.class 文件的集合
    	 */
    	 public static Set<String> findAllJarClassfiles(String jarName){
    		//存放jar包下对应的文件路径和名称
    		Set<String> jarFileList = new HashSet<String>();
    		 try {
    			JarFile jarFile = new JarFile(jarName);
    			Enumeration<JarEntry> entries = jarFile.entries();
    			while(entries.hasMoreElements()){
    				JarEntry jarEntry = entries.nextElement();
    				String fileName = jarEntry.getName();
    				if(fileName.endsWith(".class")){
    					//System.out.println(fileName);
    					jarFileList.add(fileName);
    				}
    			}
    		} catch (IOException e) {
    			System.err.println("获取jar包下的所有class出错!");
    		}
    		 return jarFileList;
    	 }
    	 
    	/**
    	 * 构造URI/URL格式的文件路径<br/>
    	 * 统计所有jar包中所有class文件的代码行数
    	 * @param jarName	jar包的路径和名称
    	 * @param jarClassFileName	jar包下所有文件.class 文件的路径和名称
    	 * @throws	IOException
    	 */
    	 public static void countJarLine(String jarName,String jarClassFileName) {
    		try {
    			URL url = new URL("jar:file:/"+jarName+"!/"+jarClassFileName+""); 
    			//System.out.println(url); 
    			InputStream is=url.openStream(); 
    			BufferedReader br=new BufferedReader(new InputStreamReader(is));
    			String line = "";
    			while((line = br.readLine())!=null){
    				countCode ++;
    			}
    		} catch (Exception e) {
    			System.err.println("统计jar包总代码数出错!");
    		}
    	}
    	 
    //==========================================================================================//		
    	public static void main(String[] args) throws Exception {
    		long start = System.nanoTime();
    		runJarTotal();
    		long end = System.nanoTime();
    		System.out.print("cost: " + (end - start)/1e9 + " seconds");
    	}
    }
    
    

    3:调用1、2中的工具类,统计出 项目中指定路径下 *.java 和指定jar包中*.class 的总代码行数,文件为 CountTotalMain.java

    package com.dufy.test;
    
    /**
     * 统计项目中所有代码的行数<br/>
     * 	1: .java文件中代码<br/>
     * 	2: jar包中的文件代码
     * @author aflyun
     *
     */
    public class CountTotalMain {
    
    	public static void main(String[] args) {
    		long start = System.nanoTime();
    		
    		int runJavaTotal = JavaTotal.runJavaTotal();
    		int runJarTotal = JarTotal.runJarTotal();
    		System.out.println("java总代码: " + runJavaTotal +"----jar总代码: " + runJarTotal);
    		System.out.println("项目中总代码之和为 : " + (runJarTotal + runJavaTotal));
    		
    		long end = System.nanoTime();
    		System.out.println("cost: " + (end - start)/1e9 + " seconds");
    	}
    }
    
    


    展开全文
  • json校验工具,支持 1.json字符串格式化 2.json格式错误报错,找出报错所在行并标出
  • 原因: 自定义视图、控件的的那个类继承了View或其它布局类的时候没有实现所有的构造方法。 错误写法: 正确写法:
  • Created by Wang, Jerry, last modified on Jul 20, 2016 比如这个:上面我看到当前是在listenerStart()这个方法的line 4932,但是单击之后自动进到下面的resourcesStart方法里去,和listenerStart方法不匹配。...
  • Java获取Try,Catch报错信息数据

    千次阅读 2019-01-08 21:15:17
    图二展示的代码,是打印多种一场信息的代码部分,图一是打印的日志信息。对应可以看到 error.getCause().getMessage()可以得到比较完善,直观的错误信息。...
  • 比如jsp可能只有200多行,但是控制台打印的异常信息却定位在了500多行,原因是控制台实际打印的异常信息的行数是jsp通过编译生成的java文件的行数。所以定位问题变得很简单,只要找到编译后的java文件即可。此java...
  • 查找错误代码行数

    2021-05-25 15:28:19
    日常使用的工具代码 public static StringBuffer getTraceInfo(Exception e) { StringBuffer sb = new StringBuffer(); StackTraceElement[] stacks = e.getStackTrace(); for (int i = 0;...
  • 示例代码: ...import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; public class SumJavaCode {...
  • 1、java日志记录错误的文件、方法、行号、报错信息 StackTraceElement s= e.getStackTrace()[0]; 1.1、记录保存的文件s.getFileName() 1.2、记录保存的方法s.getMethodName() 1.3、记录报错的行号 s....
  • 关于java报错问题

    2018-03-12 19:30:33
    org.apache.jasper.JasperException: /fsort/all.jsp(1,1)  Page-encoding specified in XML prolog ...关于SSH蓝色桶 数据类型问题 不能用INT 用Integer 而且相应的 type类型 要求格式大写 否则 启动tomach报错
  • 日志及时准确的记录错误行数

    千次阅读 2013-10-17 15:04:31
    目前因现场人员反映发现action出错时,日志没有记录下错误,因为咱们在写Action的方法时,方法加了 ...,这样不好,错误精确不到具体行数,以后要用: log.error(e.toString(), e); 替换
  • 集成下来之后,报错。 具体表现为,但是报错部分对应的aws包,我已经依赖过了。有没有详细步骤解决的。 这步不解决没法测试。
  • 在开发中,我们常常用打印...在Java中我们常常使用方法System.out.println()来在控制台打印日志,以便我们的调试。Android中有一个专门的类Log来实现在Android系统下日志的打印,更加方便我们定位程序出现问题的地方。
  • 关于java导出Excel报错65535的解决方案 ...首先关于java导出Excel最大限制是65535行 如果超出这个行数的话 就会报错 要不就在下一个sheet写入 要不就改成csv的后缀 csv最大限制的行数是1000w行 ...
  • java字节码中,方法有一项可选的Attribute叫做LineNumberTable,记录了源代码行数到字节码偏移量的映射。 还有一个class文件的可选Attribute,记录了源文件名称。 所以执行时才能知道是哪个文件的第几行。 这都...
  • printStackTrace() 方法在 java.lang.Throwable 类中,方法的调用链路如下所示: java.lang.Throwable#printStackTrace() -> java.lang.Throwable#printStackTrace(java.io.PrintStream) -> java.lang.Throwable#...
  • at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(Unknown Source) at java.lang.ClassLoader.loadClass(Unknown Source) at sun.misc.Launcher$...
  • Groovy报错行号

    2018-12-28 19:23:20
    def main(x){ if(x &lt; 4.5){ println(x) }else { println("not accept ......) ...上面的脚本在执行的时候传入一个参数 3.5 发现报了个...avax.script.ScriptException: java.lang.IllegalArgumentExceptio...
  • 有时没有log打出的情况下,运行起来在控制台上,为了快速知道在运行到哪里,哪个方法,哪一行,这种适合经验尚浅的人调试,大多的老鸟一看报错就知道在哪了 这个TAG是控制是否打出的开关,有时不想让其在控制台打出...
  • 原因可能是用ant打包,没有设置javac中的参数 debug="...java.lang.NullPointerException at com.dyr.cloud.connection.impl.ActionDelegateImpl.getAllGPUGroupAllocationAlgorithm(Unknown Source) a...
  • Java 读取Excel获取真实行数

    万次阅读 2018-11-08 09:56:51
     * 所以,在做导入excel的时候,建议想要正确获取行数,可以做一个人为的约定,比如约定导入文件第一列不允许为空,行数就按照第一列的有效行数来统计;这样就能正确获取到实际想要的行数; 更新版本, 因为发现有...
  • 统计你写的java代码行数

    千次阅读 2013-10-09 17:37:21
    import java.io.BufferedReader;  import java.io.File;  import java.io.FileNotFoundException;  import java.io.FileReader;  impo
  • 最近打算把项目部署到虚拟机上进行测试,发现没有报错信息,后来研究了下,项目里面几乎都使用了try...catch,这就导致输出的日志里面没有异常信息,下面直接上代码。 import org.apache.commons.lang.exception....
  • 利用LineNumberReader行号读取器即可达到这一目的;...import java.io.File; import java.io.FileReader; import java.io.IOException; import java.io.LineNumberReader; public class ReadSelectedLi
  • 报错如下: Compilation of JSP File '/index.jsp' failed: index.jsp:1:19: "Java" is not a valid setting for the language attribute. <%@ page language="Java" contentType="text/html; charset=UTF-8

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,387
精华内容 6,954
关键字:

java报错行数

java 订阅