我有一个奇怪的问题 - 在maven构建过程中无法读取某些类文件。
A
和项目B
。B
取决于项目A
目标JAR文件。在项目B
编译期间,它无法在项目A
JAR文件中读取lib - 尽管指向它的部分是完美的。
我还检查并验证了maven脚本,这很完美。
错误:
[INFO] Compiling 137 source files to V:\dhs_tss_build_view\dhs_tssproject\tss\tsscommon-server\target\classes
[INFO] ------------------------------------------------------------------------
[ERROR] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Compilation failure
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/oblix/da/wsdl/OblixLoginAc
cess.java:[51,60] cannot find symbol
symbol : class BusinessException
location: class us.mn.state.dhs.tss.common.oblix.da.wsdl.OblixLoginAccess
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[187,14] cannot find symbol
symbol : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[204,14] cannot find symbol
symbol : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl
[INFO] ------------------------------------------------------------------------
[DEBUG] Trace
org.apache.maven.BuildFailureException: Compilation failure
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:579)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:499)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:478)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:330
)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:291)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:142)
at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:336)
at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:129)
at org.apache.maven.cli.MavenCli.main(MavenCli.java:287)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
Caused by: org.apache.maven.plugin.CompilationFailureException: Compilation failure
at org.apache.maven.plugin.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:516)
at org.apache.maven.plugin.CompilerMojo.execute(CompilerMojo.java:114)
at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:451)
at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:558)
... 16 more
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1 minute 56 seconds
[INFO] Finished at: Mon Oct 19 09:46:53 CDT 2009
[INFO] Final Memory: 11M/20M
[INFO] ------------------------------------------------------------------------
答案 0 :(得分:10)
我遇到了同样的问题,这就是我建议您解决的问题:
执行命令
mvn dependency:list
并仔细阅读是否有任何警告消息表明对于某些依赖项,将不存在可传递的依赖项。
如果是,请使用-X标志重新运行它:
mvn dependency:list -X
查看maven抱怨的详细信息(-X标志可能有很多输出)
在我的情况下,依赖maven模块pom.xml存在问题 - 具有托管依赖性。尽管在父pom中定义了托管依赖项的版本,但是Maven无法解决它并且抱怨在依赖的pom.xml中缺少版本
所以我只是配置了丢失的版本,问题就消失了。
答案 1 :(得分:7)
尝试使用:
mvn clean package install
此命令应将您的工件安装在本地maven仓库中。
PS:我看到这是一个老问题,但对未来的某些人来说可能会有所帮助。
答案 2 :(得分:4)
可能是因为堆内存不足。
这听起来很奇怪,但尝试一下,它可能会起作用:
export MAVEN_OPTS='-Xms384M -Xmx512M -XX:MaxPermSize=256M'
资料来源:https://groups.google.com/group/neo4j/msg/e208be9ee1c101d7)
答案 3 :(得分:2)
您可以尝试运行“mvn site”命令并查看您拥有的传递依赖项,然后解决潜在的冲突(通过在某处省略隐式依赖项)。只是一个猜测(如果没有看到你的pom信息,知道问题可能有点困难)......
答案 4 :(得分:2)
我有这样的错误,但在
之后1 /
mvn eclipse:clean
mvn eclipse:eclipse -Dwtpversion=2.0
2 / 运行eclipse,打开项目
3 /
mvn package
它的工作
答案 5 :(得分:2)
我遇到了类似的问题,过度搜索后再也没有在网上找到任何内容。
我查看了pom.xml
文件,并在依赖项中更改了<dependency>
的范围:
<scope>test</scope>
至<scope>compile</scope>
。
以前我只是将它用于测试,但我改变了项目的结构,从来不知道我必须改变它。
test: 此范围表示不需要依赖项 正常使用该应用程序,仅适用于测试 编译和执行阶段。
compile: 这是默认范围,如果未指定,则使用此范围。编 依赖项在项目的所有类路径中都可用。 此外,这些依赖项将传播到依赖项目。
以下是Apache Maven Docs的参考: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope
答案 6 :(得分:1)
我猜你的本地maven资源库中的项目是一个错误版本的jar。看起来依赖性已经解决,否则我认为maven没有开始编译,但通常这些编译错误意味着你有一个版本混淆。尝试制作项目A的maven clean install
并查看它是否会改变项目B的某些内容......
此外,有关您的设置的更多信息可能很有用:
答案 7 :(得分:1)
错误很明显:“找不到符号”。某些依赖项无法解析(您甚至无法解析引用跟踪中的行和列):
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/oblix/da/wsdl/OblixLoginAc
cess.java:[51,60] cannot find symbol
symbol : class BusinessException
location: class us.mn.state.dhs.tss.common.oblix.da.wsdl.OblixLoginAccess
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[187,14] cannot find symbol
symbol : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl
V:/dhs_tss_build_view/dhs_tssproject/tss/tsscommon-server/src/main/java/us/mn/state/dhs/tss/common/app/da/ldap/BaseLdapImpl.j
ava:[204,14] cannot find symbol
symbol : class Phone
location: class us.mn.state.dhs.tss.common.app.da.ldap.BaseLdapImpl
下面要验证几件事:
Maven工作正常,你在某处犯了错误。
答案 8 :(得分:1)
我遇到了同样的问题...
如何修复 - 将以下属性添加到pom.xml
<properties>
<!-- compiler settings -->
<maven.compiler.source>1.6</maven.compiler.source>
<maven.compiler.target>1.6</maven.compiler.target>
</properties>
答案 9 :(得分:1)
转到maven存储库并打开源模块的jar [tip:你可以使用winzip]来验证特定的类。
就我而言,事实并非如此。然后我在下面找到了。
如果您使用的是插件org.apache.felix / maven-bundle-plugin
确保源模块已定义export-package
示例:com.xxx.camel.dao
答案 10 :(得分:1)
依赖关系的顺序也很重要。我有同样的问题。基本上我必须先将scope test
和scope compile
依赖项放在pom.xml
中。如果我先放scope compile
然后放scope test
它将失败。
答案 11 :(得分:0)
在pom.xml中添加<sourceDirectory>src</sourceDirectory>
,并提供适当的参考。添加这个解决了我的问题
答案 12 :(得分:0)
现在我也遇到了问题
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project entry-api: Compilation failure: Compilation failure:
package com.foo.entry.common.domain does not exist
package com.foo.entry.common.model does not exist
package com.foo.entry.common.service does not exist
package com.foo.entry.common.util does not exist
花了很长时间才知道原因,这是依赖项jar之一是spring boot fat jar
,因此解决方案是移至其pom.xml中的代码下方
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
答案 13 :(得分:0)
运行以下命令后: -
mvn clean package install
我发现了这个问题:
'dependencies.dependency.scope' for org.springframework.boot:spring-boot-starter-data-rest:pom must be one of [provided, compile, runtime, test, system] but is 'import'. @ line 13, column 11
其中一个依赖项被标记为“import”。改变“范围”为我解决了这个问题。
答案 14 :(得分:0)
在多模块项目中很容易出现此错误。例如,如果您对模块A,B和C进行了更改,但是然后尝试仅编译模块B,则很容易出现此错误。假设模块B依赖于模块A.由于只编译了模块B,模块A中的类文件现在已经过时并且可能无效。
如果这是您问题的本质,编译所有模块(或以适当的分层依赖顺序排列的模块)可以解决此错误。
答案 15 :(得分:0)
如果您的依赖项很好(请查看mvn dependency:list),就像我的那样,那么这是一个maven故障, 如果您正在使用Eclipse,请执行以下操作:
你应该好。
我不知道等效的mvn命令,如果有人发布它们就可能有用。
答案 16 :(得分:0)
我有同样的问题(即使项目在Eclipse中编译/工作正常),但在使用命令行构建时却没有。 原因是我没有使用正确的文件夹结构mvn:“src / main / java / com”等。它默认查看这些文件夹(我使用的是“/ scr / main / com”等。导致问题)。
答案 17 :(得分:0)
在你的分类中,抱怨maven是一些依赖,属于某些jar的尝试,这些jar用maven命令重新构建,我使用这个命令mvn clean install -DskipTests=true
应该在这种情况下工作,当一些符号来自缺少课程