概述
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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复