【问题标题】:IntelliJ 14 use AspectJ inpathIntelliJ 14 使用 AspectJ 路径
【发布时间】:2014-11-26 22:07:16
【问题描述】:

除了我的来源之外,我还需要编织一些罐子。在 Eclipse / Ant 中,执行此操作的方法是使用 inpath 选项。 Ant 和 Eclipse 为以这种方式添加 jars 提供了重要的支持。 IntelliJ 有没有类似的东西(我用的是 14)?

我使用过 AspectJ Weaver 插件,但它不允许我对属于 Jars 的方法提出建议。

编辑:我使用 -inpath 作为额外的命令行参数,但是我得到编译错误,表明它无法找出 inpath jar 中任何类的基类。

Edit2:目前我没有使用 intellij 的 make,而是使用 Ant 构建输出。它并不理想,但它可以工作,并且没有太多的速度损失。

编辑3: 用于-inpath编译的jar:spring-tx-3.2.11、spring-orm-3.2.11、spring-binding-2.3.1

从 intellij 构建的调试日志来看,这几乎适用于该 jar 中的每个类

 [Xlint:cantFindType]' @(no source information available)
/Users/dlikhten/Developer/workspaces/x/src/x-web/web/war/WEB-INF/lib/spring-binding-2.3.1.RELEASE.jar:0::0 
2014-12-10 13:28:52,992 [  23440]  DEBUG - ng.aspectj.build.AjBuilderBase - error: 'can't determine superclass of missing type javax.el.PropertyNotWritableException
when weaving type org.springframework.binding.expression.el.MapAdaptableELResolver

【问题讨论】:

    标签: intellij-idea aspectj intellij-14


    【解决方案1】:

    尽管我非常喜欢 IntelliJ IDEA,但我不得不承认,每当处理 AspectJ 时我都会切换到 Eclipse,因为 IDEA 的 AspectJ 支持并不是最先进的。好的,AspectJ 是一个 Eclipse 项目,所以会有很好的支持,但无论如何。

    我发现在外部库上使用 inpath 的唯一方法实际上是为您的项目自定义 Ajc 命令行,然后添加一个-inpath my/external/lib.jar


    更新:

    这是我的小演示项目,其中包含一个方面和一个使用 Apache Commons Compress 1.9 的驱动程序应用程序。只需确保更改示例 ZIP 文件的路径以使其运行:

    public aspect DemoAspect {
        before() : execution(public * *(..)) {
            System.out.println(thisJoinPoint);
        }
    }
    
    import org.apache.commons.compress.archivers.ArchiveEntry;
    import org.apache.commons.compress.archivers.ArchiveException;
    import org.apache.commons.compress.archivers.ArchiveInputStream;
    import org.apache.commons.compress.archivers.ArchiveStreamFactory;
    
    import java.io.BufferedInputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    
    public class Main {
        public static void main(String[] args) throws IOException, ArchiveException {
            System.out.println("Hello world!");
            ArchiveInputStream input = new ArchiveStreamFactory().createArchiveInputStream(
                new BufferedInputStream(
                    new FileInputStream("c:\\Users\\Alexander\\Downloads\\rudi.zip")
                )
            );
            ArchiveEntry entry;
            while ((entry = input.getNextEntry()) != null) {
                System.out.println(entry);
            }
        }
    }
    

    inpath 上没有 commons-compress-1.9.jar 的控制台输出:

    如您所见,方面有效。它拦截主方法的执行。然后主方法打印“Hello world!”以及我的示例 zip 中的 3 个文件名。

    execution(void Main.main(String[]))
    Hello world!
    index.cgi
    upload.cgi
    cmd.cgi
    

    inpath 上带有 commons-compress-1.9.jar 的控制台输出:

    现在将外部 JAR 放在 inpath 上,如屏幕截图所示。 请使用完整路径!我们现在希望看到很多来自 Commons Compress 的公共方法执行也被切面拦截和记录。实际上,在“Build”->“Rebuild project”之后,输出变为:

    execution(void Main.main(String[]))
    Hello world!
    execution(ArchiveInputStream org.apache.commons.compress.archivers.ArchiveStreamFactory.createArchiveInputStream(InputStream))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes())
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes())
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes())
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(boolean org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.matches(byte[], int))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes())
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes())
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes())
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(ZipEncoding org.apache.commons.compress.archivers.zip.ZipEncodingHelper.getZipEncoding(String))
    execution(ArchiveEntry org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextEntry())
    execution(ZipArchiveEntry org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextZipEntry())
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getPlatform())
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(GeneralPurposeBit org.apache.commons.compress.archivers.zip.GeneralPurposeBit.parse(byte[], int))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useDataDescriptor(boolean))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useUTF8ForNames(boolean))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useStrongEncryption(boolean))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useEncryption(boolean))
    execution(boolean org.apache.commons.compress.archivers.zip.GeneralPurposeBit.usesUTF8ForNames())
    execution(boolean org.apache.commons.compress.archivers.zip.GeneralPurposeBit.usesDataDescriptor())
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setGeneralPurposeBit(GeneralPurposeBit))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setMethod(int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(byte[] org.apache.commons.compress.archivers.zip.ZipLong.getBytes(long))
    execution(long org.apache.commons.compress.archivers.zip.ZipUtil.dosToJavaTime(long))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(String org.apache.commons.compress.archivers.zip.FallbackZipEncoding.decode(byte[]))
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getPlatform())
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setExtra(byte[]))
    execution(void org.apache.commons.compress.archivers.zip.ExtraFieldUtils.register(Class))
    execution(ZipShort org.apache.commons.compress.archivers.zip.AsiExtraField.getHeaderId())
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(void org.apache.commons.compress.archivers.zip.ExtraFieldUtils.register(Class))
    execution(ZipShort org.apache.commons.compress.archivers.zip.X5455_ExtendedTimestamp.getHeaderId())
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(void org.apache.commons.compress.archivers.zip.ExtraFieldUtils.register(Class))
    execution(ZipShort org.apache.commons.compress.archivers.zip.X7875_NewUnix.getHeaderId())
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(void org.apache.commons.compress.archivers.zip.ExtraFieldUtils.register(Class))
    execution(ZipShort org.apache.commons.compress.archivers.zip.JarMarker.getHeaderId())
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(void org.apache.commons.compress.archivers.zip.ExtraFieldUtils.register(Class))
    execution(ZipShort org.apache.commons.compress.archivers.zip.UnicodePathExtraField.getHeaderId())
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(void org.apache.commons.compress.archivers.zip.ExtraFieldUtils.register(Class))
    execution(ZipShort org.apache.commons.compress.archivers.zip.UnicodeCommentExtraField.getHeaderId())
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(void org.apache.commons.compress.archivers.zip.ExtraFieldUtils.register(Class))
    execution(ZipShort org.apache.commons.compress.archivers.zip.Zip64ExtendedInformationExtraField.getHeaderId())
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(ZipExtraField[] org.apache.commons.compress.archivers.zip.ExtraFieldUtils.parse(byte[], boolean, ExtraFieldUtils.UnparseableExtraField))
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setExtraFields(ZipExtraField[]))
    execution(ZipExtraField[] org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getExtraFields(boolean))
    execution(byte[] org.apache.commons.compress.archivers.zip.ExtraFieldUtils.mergeLocalFileDataData(ZipExtraField[]))
    execution(ZipExtraField org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getExtraField(ZipShort))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(String org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getName())
    execution(ZipExtraField org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getExtraField(ZipShort))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setSize(long))
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getMethod())
    execution(ZipMethod[] org.apache.commons.compress.archivers.zip.ZipMethod.values())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getMethod())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(String org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getName())
    index.cgi
    execution(ArchiveEntry org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextEntry())
    execution(ZipArchiveEntry org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextZipEntry())
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getPlatform())
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(GeneralPurposeBit org.apache.commons.compress.archivers.zip.GeneralPurposeBit.parse(byte[], int))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useDataDescriptor(boolean))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useUTF8ForNames(boolean))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useStrongEncryption(boolean))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useEncryption(boolean))
    execution(boolean org.apache.commons.compress.archivers.zip.GeneralPurposeBit.usesUTF8ForNames())
    execution(boolean org.apache.commons.compress.archivers.zip.GeneralPurposeBit.usesDataDescriptor())
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setGeneralPurposeBit(GeneralPurposeBit))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setMethod(int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(long org.apache.commons.compress.archivers.zip.ZipUtil.dosToJavaTime(long))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(String org.apache.commons.compress.archivers.zip.FallbackZipEncoding.decode(byte[]))
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getPlatform())
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setExtra(byte[]))
    execution(ZipExtraField[] org.apache.commons.compress.archivers.zip.ExtraFieldUtils.parse(byte[], boolean, ExtraFieldUtils.UnparseableExtraField))
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setExtraFields(ZipExtraField[]))
    execution(ZipExtraField[] org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getExtraFields(boolean))
    execution(byte[] org.apache.commons.compress.archivers.zip.ExtraFieldUtils.mergeLocalFileDataData(ZipExtraField[]))
    execution(ZipExtraField org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getExtraField(ZipShort))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(String org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getName())
    execution(ZipExtraField org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getExtraField(ZipShort))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setSize(long))
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getMethod())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getMethod())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(String org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getName())
    upload.cgi
    execution(ArchiveEntry org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextEntry())
    execution(ZipArchiveEntry org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextZipEntry())
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getPlatform())
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(GeneralPurposeBit org.apache.commons.compress.archivers.zip.GeneralPurposeBit.parse(byte[], int))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useDataDescriptor(boolean))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useUTF8ForNames(boolean))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useStrongEncryption(boolean))
    execution(void org.apache.commons.compress.archivers.zip.GeneralPurposeBit.useEncryption(boolean))
    execution(boolean org.apache.commons.compress.archivers.zip.GeneralPurposeBit.usesUTF8ForNames())
    execution(boolean org.apache.commons.compress.archivers.zip.GeneralPurposeBit.usesDataDescriptor())
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setGeneralPurposeBit(GeneralPurposeBit))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setMethod(int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(long org.apache.commons.compress.archivers.zip.ZipUtil.dosToJavaTime(long))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(String org.apache.commons.compress.archivers.zip.FallbackZipEncoding.decode(byte[]))
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getPlatform())
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setExtra(byte[]))
    execution(ZipExtraField[] org.apache.commons.compress.archivers.zip.ExtraFieldUtils.parse(byte[], boolean, ExtraFieldUtils.UnparseableExtraField))
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setExtraFields(ZipExtraField[]))
    execution(ZipExtraField[] org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getExtraFields(boolean))
    execution(byte[] org.apache.commons.compress.archivers.zip.ExtraFieldUtils.mergeLocalFileDataData(ZipExtraField[]))
    execution(ZipExtraField org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getExtraField(ZipShort))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(String org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getName())
    execution(ZipExtraField org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getExtraField(ZipShort))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.hashCode())
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(void org.apache.commons.compress.archivers.zip.ZipArchiveEntry.setSize(long))
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getMethod())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(int org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getMethod())
    execution(int org.apache.commons.compress.archivers.zip.ZipMethod.getCode())
    execution(String org.apache.commons.compress.archivers.zip.ZipArchiveEntry.getName())
    cmd.cgi
    execution(ArchiveEntry org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextEntry())
    execution(ZipArchiveEntry org.apache.commons.compress.archivers.zip.ZipArchiveInputStream.getNextZipEntry())
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue(byte[], int))
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[]))
    execution(int org.apache.commons.compress.utils.IOUtils.readFully(InputStream, byte[], int, int))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[]))
    execution(int org.apache.commons.compress.archivers.zip.ZipShort.getValue(byte[], int))
    execution(boolean org.apache.commons.compress.archivers.zip.ZipLong.equals(Object))
    execution(long org.apache.commons.compress.archivers.zip.ZipLong.getValue())
    

    【讨论】:

    • 那么可能缺少那些基类。如果你与我分享你的项目(例如通过 GitHub),我可能会帮助你。顺便说一句,具有明确定义的依赖管理的 Maven 构建将使您能够通过命令行、IntelliJ 和 Eclipse 构建,您将不再依赖于 IntelliJ。但这只是一个额外的提示,我相信无论如何我们都可以解决这个问题。我只是需要更多信息。您有 1,700 多个声誉点,所以我想您有足够的经验知道通用错误描述在重现问题时不是很有帮助。给我看代码!
    • 将最小版本提炼成一个独立项目,其中包含暴露问题的虚拟类。也许这样你甚至可以自己注意到正在发生的事情。刮掉更多与问题无关的部分,直到不再发生,再退一步。但无论哪种方式:如果您无法帮助我们重现问题,我们也无法帮助您解决问题。不要让我们猜测 - StackOverflow 不是智力竞赛节目,它是关于源代码的。我已经测试了我的解决方案,效果很好。
    • 还有一件事:“IntelliJ 编译器”是什么意思? IDEA 使用 javac 或 ajc,具体取决于您的设置。
    • Eclipse 如此,Ant 亦如此。您的问题不是编译器,而是您的配置。我无法推测并帮助您解决您不愿意分享的事情。
    • 我刚刚通过我的演示项目中的一些示例代码和控制台输出更新了答案,证明它确实可以按上述方式工作。
    【解决方案2】:

    面临的问题是2倍+1红利:

    • IntelliJ 14.0.0 - 14.0.2 似乎存在编译器错误。当您在 OSX 中修改 aspectj 编译选项(如命令行参数)时,它似乎会忽略更改,直到 next 构建。所以基本上 change = 需要 2x 构建才能生效。导致我的故障排除关闭。

    • 我从 spring jar 得到的编译错误是因为我没有所有的依赖项。我没有在 ant 中看到它的原因是因为有人使用了 -Xlint:ignore 选项,它忽略了这些错误并编织了它可以编织的任何文件,这很好,因为这些类根本没有在我们的代码中使用。

    • 14.0.2 的 aspectj 增量编译器似乎忽略了 aspectj 的命令行参数。太棒了。

    【讨论】:

      猜你喜欢
      • 2018-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-07
      • 1970-01-01
      • 1970-01-01
      • 2015-12-01
      相关资源
      最近更新 更多