我是靠谱客的博主 优秀柠檬,最近开发中收集的这篇文章主要介绍Problems Series 1Small TalkProblem Series,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Catelogue

  • Small Talk
    • Foreword
    • Statement of Myself
    • Best Wishes
    • TimeLine
  • Problem Series
    • Problem 1
    • Problem 2
    • Problem 3
    • Problem 4
    • Problem 5

Small Talk

Foreword

大家好,我是Patrick!我决定从现在开始,将自己学习的东西发布为博客,不仅是为了未来自己回顾,也为了构建一个OpenSource的Community出一份自己的力量。

Statement of Myself

首先,我个人属于偏学术派,现目前工业上的知识稍微匮乏一些,自己的理论知识比较好,学习能力也很强,需要将自己的knowledge put into use。 我会将自己的一些学术上的知识,以及工业上学习的新skill sets一起发布到我的专栏当中,我会很好的去分类,所以大家fell free to get what you want from my blog,你可以评论,我会很认真地阅读您所提的每一个意见。如果我的文字有任何问题的话,你们直接提出来即可,Don’t mind it,虚心受教。

Best Wishes

希望我们可以一起成为更好的Engineer!

TimeLine

今天是work的第六天,这几天主要是在学习新的东西,但是也谈不上学习,感觉只能是了解一下浅显的SpringBoot, SprintCloud,Eureka,Ribbon,Hystrix,Feign,Zuul,Maven,Dubbo,Zookeeper,Docker,Nacos是在做什么,完成了什么样的功能。还没有去了解的MangoDB,PostgreSQL,Kubernetes。初次之外,主要还是想将一个超大型的项目跑起来,因为之前从环境中拷贝下来,加载到Intellij IDEA中之后,出现了许多问题,今天我主要阐述一下我出现的一些问题和反思,以及自己的技术规划问题。

Problem Series

Problem 1

Some problems were encountered while building the effective model

这个问题发生在我打包项目的时候,这个地方log出来,表示在打包的时候,可以构建出一个项目,但是不能构建出一个effective model。当然我的同事(I’m new in office)告诉我这个日志可以直接忽略,but I don’t think so. cause I’m a damn perfect engineer when I encounter problems, I gonna fix them.
发生这个问题的时候,我的第一反应,先去网上搜索,因为这是一个插件问题,但是我对maven的plugin并不是非常熟悉,所以我就看了一下Maven插件的一些原理上的东西。解决了我们为什么需要插件,以及它和dependency之间的区别。所以在看了这个问题之后,我试图去解决出现这些警告,从原理上去解决,因为我觉得作为一个potent程序员,应该具有去写dependency的能力。

Problem 2

dependency.(groupId:artifactId:type:classifier)' must be unique

如你所见,这是我遇见的第一个错误,根据在日志文件中的解释,我发现了这是因为在一个POM(Project Object Model)文件中,只能出现一次,所以下载下来的文件,之前的开发者,还是连着写了两个相同的dependency,so unprofessional。把重复的删除,问题就解决了。

Problem 3

Some problems were encountered while building the effective model for com.dist:dgp-dubbo-server-base:jar:1.0.0-SNAPSHOT
'dependencies.dependency.systemPath' for org.mozilla.intl:chardet:jar should not point at files within the project directory, ${project.basedir}/src/main/resources/lib/chardet-1.0.jar will be unresolvable by dependent projects @ line 118, column 25

然后,我会列一些网上的人给的一些方案。

移除本地包依赖中的 scope 和 systemPath

我不仅看了出现问题的POM,我还看了一下没有出现问题的POM,我发现,有一些文件也是这么写的,但是并没有出现这个问题,所以在尝试过这种方法后,我选择放弃这种方法(因为这个大项目下面还有许多小的项目,每一个单独来说都可以专门是一个项目的那种,这些子项目和主项目之间的关系是一致的)。
之后我又新搜寻了一个方式:

出错原因:maven 打包时没有将以 systemPath 这种形式引入的 jar 包,包含在内
解决办法:在 spring-boot-maven-plugin 插件中添加如下配置即可

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <includeSystemScope>true</includeSystemScope>
            </configuration>
        </plugin>
    </plugins>
</build>

这是他的处理方案。
由于我当时对配置的书写不太熟悉,而且这个东西是对应一个jar包的,所以这个地方看起来我无能为力,暂时放弃处理这个问题。

Problem 4

JAR will be empty - no content was marked for inclusion!
Error:(4, 48) java: 程序包jdk.nashorn.internal.runtime.regexp.joni不存在

他人的解决方案:

经过每个文件仔细去对比,发现目录错了。maven的标准目录结构是
poject->src>main,而我的项目是projec>main,子目录结构不对。
所以出现这个报错,建议检查一下整个目录结构是不是符合maven的约定。

经过我查看之后,发现该项目没有出现这种情况,我顺便又看了一些Maven应该有的结构,进行温习。

Problem 5

java: 程序包sun.security.action不存在

然后我发现,这个包确实存在于external library里面,我很苦恼,我看到了一个看法,是这样子的,虽然项目引入了这个文件,但是这个文件并没有被编译成.class文件,所以在编译阶段,这个文件里面的内容就无法被我们使用。

网上的方案1:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
        <encoding>UTF-8</encoding>
        <!--解决 maven 编译 找不到com.sun 包的问题-->
        <compilerArgument>
            -XDignore.symbol.file
        </compilerArgument>
    </configuration>
</plugin>

这个方法我是望而却步的,因为这个项目有太多POM文件了,我一时不知道该放在哪个文件夹中。我向同事说了一下我的看法:我推测有两种放的方式是可以被采纳的,如果这个问题出现在整个大项目中,则放在大项目中。如果是一个小项目内的问题,就放在小项目中就行。经过观察,我把这段代码放在了大项目下的POM文件中。当我查找时,发现了一个问题,原本的POM文件中的这个被注释掉了,原本是有的,所以验证了我的猜想。我通过解出这个代码的注释。然后又继续在网上找相关的内容,需要多个人来验证我的猜测。
我先放出原本他们注释了的内容:

 <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven.compiler.plugin.version}</version>
        <configuration>
          <target>${java.version}</target>
          <source>${java.version}</source>
          <encoding>${project.build.sourceEncoding}</encoding>
          </configuration>
      </plugin>

其他人的第二个解决方案:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
        <source>1.7</source>
        <target>1.7</target>
        <encoding>UTF-8</encoding>
        <compilerArgs>
            <arg>-XDignore.symbol.file</arg>
        </compilerArgs>
        <fork>true</fork>
    </configuration>
</plugin>

可以看出,除了些许的不同以外,还差这一部分的核心代码:

        <compilerArgs>
          <arg>-XDignore.symbol.file</arg>
        </compilerArgs>
        <fork>true</fork>

我通过加入这部分差的代码之后,问题还是没有解决。
然后我继续搜寻,发现原来是JDK版本不对导致的,我用的是JDK13,但是项目应该使用JDK8,我重新下载安装之后,这个问题似乎解决了。但是又出现了新的问题。
我有一些疑惑:为什么使用新版本会出现这种问题,不应该是向下兼容的吗,可能要真正窥探进去才能发现问题。

最后

以上就是优秀柠檬为你收集整理的Problems Series 1Small TalkProblem Series的全部内容,希望文章能够帮你解决Problems Series 1Small TalkProblem Series所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(31)

评论列表共有 0 条评论

立即
投稿
返回
顶部