Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java PrintWriter错误_Java_Compilation_Compiler Errors_Aspectj_Printwriter - Fatal编程技术网

Java PrintWriter错误

Java PrintWriter错误,java,compilation,compiler-errors,aspectj,printwriter,Java,Compilation,Compiler Errors,Aspectj,Printwriter,我是一个长期的读者,但第一次写作 我目前正试图在我们的代码库中使用AspectJ实现一个记录器。AspectJ似乎工作得很好,但我遇到了非常奇怪的Java错误。我是一个长期的C++和.NET开发者,仍然适应java世界,所以我道歉如果这是一个愚蠢的问题。p> 我的代码试图捕获异常,并将相关信息记录到文本文件中。陷阱工作得很好,但是我注意到当我部署时,我没有得到任何数据。我在Java反编译器中打开了类文件,注意到PrintWriter似乎在生成错误。我从来没有见过这样的问题,所以我希望你能有所了解

我是一个长期的读者,但第一次写作

我目前正试图在我们的代码库中使用AspectJ实现一个记录器。AspectJ似乎工作得很好,但我遇到了非常奇怪的Java错误。我是一个长期的C++和.NET开发者,仍然适应java世界,所以我道歉如果这是一个愚蠢的问题。p> 我的代码试图捕获异常,并将相关信息记录到文本文件中。陷阱工作得很好,但是我注意到当我部署时,我没有得到任何数据。我在Java反编译器中打开了类文件,注意到PrintWriter似乎在生成错误。我从来没有见过这样的问题,所以我希望你能有所了解

package mil.uscg.c3cen.vic.aspect;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.AfterThrowing;
import org.aspectj.lang.JoinPoint;

@Aspect
public class LoggingAspect
{
    private final String LOG_FILE = "aspectLog.txt";
    private final File file = new File(LOG_FILE);

    private LoggingAspect() 
    { 

    }

    private void logException(String msg) 
    {
        try 
        {
            if(!file.exists())
                file.createNewFile();
        }
        catch(IOException e) 
        {

        }

        try (FileWriter fw = new FileWriter(file); 
               BufferedWriter bw = new BufferedWriter(fw);
               PrintWriter pw = new PrintWriter(bw)) 
        {
            pw.println(msg);
        }
        catch(IOException e)
        {

        }
    }

    private String getSimpleFunctionInfo(String className, String     function, Object[] args)
    {
        StringBuilder builder = new StringBuilder();
        builder.append(". Method: ");
        builder.append(className);
        builder.append(".");
        builder.append(function);

        if(args.length == 0)
        {
            builder.append("()");
            return builder.toString();
        }

        builder.append("(");

        for(Object o : args)
        {
            builder.append(o.toString());
            builder.append(",");
        }
        // Replace the comma for the last param with a closing parenthesis
        int len = builder.length();
        builder.replace(len -1, len, ")");

        return builder.toString();
    }

    // Returns a formatted exception. "Exception.ErrorMessage"
    private String getSimpleExceptionInfo(String name, String msg)
    {
        StringBuilder builder = new StringBuilder();
        builder.append("Exception caught: ");
        builder.append(name);
        builder.append(". Message: ");
        builder.append(msg);
        return builder.toString();
    }


   @AfterThrowing(pointcut = "execution(* mil.uscg.c3cen.*.*.*(..)) "
       //+ "&& !within(mil.uscg.c3cen.vic.aspect.*) "
       , throwing = "excep")
    public void afterThrowing(JoinPoint jp, Throwable excep) throws Throwable
    {
        String ex = getSimpleExceptionInfo(excep.getClass().getSimpleName(), 
                                                             excep.getMessage());

        String name = getSimpleFunctionInfo(jp.getSignature().getDeclaringType().getSimpleName(), 
                                                               jp.getSignature().getName(), 
                                                               jp.getArgs());

        StringBuilder builder = new StringBuilder();
        builder.append(ex);
        builder.append(name);

        logException(builder.toString());
    } 
}
除函数logException外,所有内容都与类文件中的预期一致

/* Error */
  private void logException(String msg)
  {
    // Byte code:
    //   0: aload_0
    //   1: getfield 25 mil/uscg/c3cen/vic/aspect/LoggingAspect:file    Ljava/io/File;
    //   4: invokevirtual 32    java/io/File:exists ()Z
    //   7: ifne +15 -> 22
    //   10: aload_0
    //   11: getfield 25    mil/uscg/c3cen/vic/aspect/LoggingAspect:file    Ljava/io/File;
    //   14: invokevirtual 36   java/io/File:createNewFile  ()Z
    //   17: pop
    //   18: goto +4 -> 22
    //   21: pop
    //   22: aconst_null
    //   23: astore_2
    //   24: aconst_null
    //   25: astore_3
    //   26: new 39 java/io/FileWriter
    //   29: dup
    //   30: aload_0
    //   31: getfield 25    mil/uscg/c3cen/vic/aspect/LoggingAspect:file    Ljava/io/File;
    //   34: invokespecial 41   java/io/FileWriter:<init>   (Ljava/io/File;)V
    //   37: astore 4
    //   39: new 44 java/io/BufferedWriter
    //   42: dup
    //   43: aload 4
    //   45: invokespecial 46   java/io/BufferedWriter:<init>   (Ljava/io/Writer;)V
    //   48: astore 5
    //   50: new 49 java/io/PrintWriter
    //   53: dup
    //   54: aload 5
    //   56: invokespecial 51   java/io/PrintWriter:<init>  (Ljava/io/Writer;)V
    //   59: astore 6
    //   61: aload 6
    //   63: aload_1
    //   64: invokevirtual 52   java/io/PrintWriter:println (Ljava/lang/String;)V
    //   67: aload 6
    //   69: ifnull +24 -> 93
    //   72: aload 6
    //   74: invokevirtual 55   java/io/PrintWriter:close   ()V
    //   77: goto +16 -> 93
    //   80: astore_2
    //   81: aload 6
    //   83: ifnull +8 -> 91
    //   86: aload 6
    //   88: invokevirtual 55   java/io/PrintWriter:close   ()V
    //   91: aload_2
    //   92: athrow
    //   93: aload 5
    //   95: ifnull +43 -> 138
    //   98: aload 5
    //   100: invokevirtual 58  java/io/BufferedWriter:close    ()V
    //   103: goto +35 -> 138
    //   106: astore_3
    //   107: aload_2
    //   108: ifnonnull +8 -> 116
    //   111: aload_3
    //   112: astore_2
    //   113: goto +13 -> 126
    //   116: aload_2
    //   117: aload_3
    //   118: if_acmpeq +8 -> 126
    //   121: aload_2
    //   122: aload_3
    //   123: invokevirtual 59  java/lang/Throwable:addSuppressed   (Ljava/lang/Throwable;)V
    //   126: aload 5
    //   128: ifnull +8 -> 136
    //   131: aload 5
    //   133: invokevirtual 58  java/io/BufferedWriter:close    ()V
    //   136: aload_2
    //   137: athrow
    //   138: aload 4
    //   140: ifnull +66 -> 206
    //   143: aload 4
    //   145: invokevirtual 65  java/io/FileWriter:close    ()V
    //   148: goto +58 -> 206
    //   151: astore_3
    //   152: aload_2
    //   153: ifnonnull +8 -> 161
    //   156: aload_3
    //   157: astore_2
    //   158: goto +13 -> 171
    //   161: aload_2
    //   162: aload_3
    //   163: if_acmpeq +8 -> 171
    //   166: aload_2
    //   167: aload_3
    //   168: invokevirtual 59  java/lang/Throwable:addSuppressed   (Ljava/lang/Throwable;)V
    //   171: aload 4
    //   173: ifnull +8 -> 181
    //   176: aload 4
    //   178: invokevirtual 65  java/io/FileWriter:close    ()V
    //   181: aload_2
    //   182: athrow
    //   183: astore_3
    //   184: aload_2
    //   185: ifnonnull +8 -> 193
    //   188: aload_3
    //   189: astore_2
    //   190: goto +13 -> 203
    //   193: aload_2
    //   194: aload_3
    //   195: if_acmpeq +8 -> 203
    //   198: aload_2
    //   199: aload_3
    //   200: invokevirtual 59  java/lang/Throwable:addSuppressed   (Ljava/lang/Throwable;)V
    //   203: aload_2
    //   204: athrow
    //   205: pop
    //   206: return
    // Line number table:
    //   Java source line #28   -> byte code offset #0
    //   Java source line #29   -> byte code offset #10
    //   Java source line #30   -> byte code offset #18
    //   Java source line #31   -> byte code offset #21
    //   Java source line #36   -> byte code offset #22
    //   Java source line #36   -> byte code offset #26
    //   Java source line #37   -> byte code offset #39
    //   Java source line #38   -> byte code offset #50
    //   Java source line #40   -> byte code offset #61
    //   Java source line #41   -> byte code offset #67
    //   Java source line #42   -> byte code offset #205
    //   Java source line #46   -> byte code offset #206
    // Local variable table:
    //   start  length  slot    name    signature
    //   0  207 0   this    LoggingAspect
    //   0  207 1   msg String
    //   23 1   2   localObject1    Object
    //   80 28  2   localObject2    Object
    //   112    92  2   localObject3    Object
    //   25 1   3   localObject4    Object
    //   106    17  3   localThrowable1 Throwable
    //   151    17  3   localThrowable2 Throwable
    //   183    17  3   localThrowable3 Throwable
    //   37 140 4   fw  java.io.FileWriter
    //   48 84  5   bw  java.io.BufferedWriter
    //   59 28  6   pw  java.io.PrintWriter
    //   21 1   12  localIOException1   java.io.IOException
    //   205    1   13  localIOException2   java.io.IOException
    // Exception table:
    //   from   to  target  type
    //   0  18  21  java/io/IOException
    //   61 67  80  finally
    //   50 93  106 finally
    //   39 138 151 finally
    //   26 183 183 finally
    //   22 205 205 java/io/IOException
  }
/*错误*/
私有void日志异常(字符串msg)
{
//字节码:
//0:aload_0
//1:getfield25 mil/uscg/c3cen/vic/aspect/loggingapect:file Ljava/io/file;
//4:invokeVirtual32java/io/File:exists()Z
//7:ifne+15->22
//10:aload_0
//11:getfield25 mil/uscg/c3cen/vic/aspect/loggingapect:file Ljava/io/file;
//14:invokeVirtual36 java/io/File:createNewFile()Z
//17:流行音乐
//18:转到+4->22
//21:流行音乐
//22:aconst_null
//23:astore_2
//24:aconst_null
//25:astore_3
//26:新的39 java/io/FileWriter
//29:dup
//30:aload_0
//31:getfield25 mil/uscg/c3cen/vic/aspect/loggingapect:file Ljava/io/file;
//34:invokespecial 41 java/io/FileWriter:(Ljava/io/File;)V
//37:astore 4
//39:新的44 java/io/BufferedWriter
//42:dup
//43:aload 4
//45:invokespecial 46 java/io/BufferedWriter:(Ljava/io/Writer;)V
//48:astore 5
//50:49新java/io/PrintWriter
//53:dup
//54:aload 5
//56:invokespecial51java/io/PrintWriter:(Ljava/io/Writer;)V
//59:astore 6
//61:aload 6
//63:aload_1
//64:invokeVirtual52 java/io/PrintWriter:println(Ljava/lang/String;)V
//67:aload 6
//69:ifnull+24->93
//72:aload 6
//74:invokeVirtual55 java/io/PrintWriter:close()V
//77:转到+16->93
//80:astore_2
//81:aload 6
//83:ifnull+8->91
//86:aload 6
//88:invokeVirtual55 java/io/PrintWriter:close()V
//91:aload_2
//92:athrow
//93:aload 5
//95:ifnull+43->138
//98:aload 5
//100:invokeVirtual58 java/io/BufferedWriter:close()V
//103:转到+35->138
//106:astore_3
//107:aload_2
//108:ifnonnull+8->116
//111:aload_3
//112:astore_2
//113:转到+13->126
//116:aload_2
//117:aload_3
//118:if_acmpeq+8->126
//121:aload_2
//122:aload_3
//123:invokevirtual 59 java/lang/Throwable:addsupprested(Ljava/lang/Throwable;)V
//126:aload 5
//128:ifnull+8->136
//131:aload 5
//133:invokeVirtual58 java/io/BufferedWriter:close()V
//136:aload_2
//137:athrow
//138:aload 4
//140:ifnull+66->206
//143:aload 4
//145:invokevirtual 65 java/io/FileWriter:close()V
//148:转到+58->206
//151:astore_3
//152:aload_2
//153:ifnonnull+8->161
//156:aload_3
//157:astore_2
//158:转到+13->171
//161:aload_2
//162:aload_3
//163:if_acmpeq+8->171
//166:aload_2
//167:aload_3
//168:invokevirtual 59 java/lang/Throwable:addsupprested(Ljava/lang/Throwable;)V
//171:aload 4
//173:ifnull+8->181
//176:aload 4
//178:invokevirtual 65 java/io/FileWriter:close()V
//181:aload_2
//182:athrow
//183:astore_3
//184:aload_2
//185:ifnonnull+8->193
//188:aload_3
//189:astore_2
//190:转到+13->203
//193:aload_2
//194:aload_3
//195:如果acmpeq+8->203
//198:aload_2
//199:aload_3
//200:invokeVirtual59 java/lang/Throwable:addsupprested(Ljava/lang/Throwable;)V
//203:aload_2
//204:athrow
//205:流行音乐
//206:返回
//行号表:
//Java源代码行#28->字节码偏移量#0
//Java源代码行#29->字节码偏移量#10
//Java源代码行#30->字节码偏移量#18
//Java源代码行#31->字节码偏移量#21
//Java源代码行#36->字节码偏移量#22
//Java源代码行#36->字节码偏移量#26
//Java源代码行#37->字节码偏移量#39
//Java源代码行#38->字节码偏移量#50
//Java源代码行#40->字节码偏移量#61
//Java源代码行#41->字节码偏移量#67
//Java源代码行#42->字节码偏移量#205
//Java源代码行#46->字节码偏移量#206
//局部变量表:
//起始长度插槽名称签名
//0 2070此日志方面
//0 207 1消息字符串
//23 1 2 localObject1对象
//80 28 2 localObject2对象
//112 92 2 localObject3对象
//25 1 3 localObject4对象
//106 17 3本地可丢弃1可丢弃
//151 17 3本地可丢弃2可丢弃
//183 17 3本地可丢弃3可丢弃
//37 140 4 fw java.io.FileWriter
//48 84 5 bw java.io.BufferedWriter
//59 28 6 pw java.io.PrintWriter
//21 1 12 localIOException1 java.io.IOException
//205 1 13 localIOException2 java.io.IOException
//例外情况表:
//从到目标类型
//0 18 21 java/io/IOException
//616780决赛