当前位置: 首页 > 知识库问答 >
问题:

java上的模块导出错误。命名为spring。ldap。即使在pom中使用了add export命令,也可以使用core?

萧鹏云
2023-03-14

我正在尝试将我的Java8项目升级到Java11,并且在这样做的时候遇到了很多问题,但是我已经修复了所有问题,除了我似乎无法在每次尝试在Netbean中运行我的项目时克服这个错误:

警告:上下文初始化期间遇到异常-取消刷新尝试:org。springframework。豆子。工厂UnsatisfiedDependencyException:创建名为“loginDialogFXController”的bean时出错:通过字段“ldapTemplate”表示的未满足的依赖关系;嵌套异常为org。springframework。豆子。工厂BeanCreationException:创建com中定义的名为“ldapTemplate”的bean时出错。decisioninsight。teleios。Spring配置。LdapConfig:通过工厂方法实例化Bean失败;嵌套异常为org。springframework。豆子。BeanInstationException:未能实例化[org.springframework.ldap.core.LdapTemplate]:工厂方法“LdapTemplate”引发异常;嵌套异常为org。springframework。豆子。工厂BeanCreationException:创建com中定义的名为“contextSource”的bean时出错。decisioninsight。teleios。Spring配置。LdapConfig:通过工厂方法实例化Bean失败;嵌套异常为org。springframework。豆子。BeanInstationException:未能实例化[org.springframework.ldap.core.support.LdapContextSource]:工厂方法“contextSource”引发异常;嵌套异常为java。lang.IllegalAccessError:类组织。springframework。ldap。果心支持AbstractContextSource(在spring.ldap.core模块中)无法访问com类。太阳jndi。ldap。LdapCtxFactory(在模块java.naming中),因为模块java。命名不会导出com。太阳jndi。ldap到模块spring。ldap。果心

我确实知道,这个错误的假定解决方案是向POM文件添加--add exports标志,如回答中所述。以下是我的POM文件的一部分:

<profile>
    <id>default</id>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.8.1</version>
                    <configuration>
                        <source>11</source>
                        <target>11</target>
                        <fork>true</fork>
                        <compilerArgs>
                            <arg>--add-exports</arg>
                            <arg>java.naming/com.sun.jndi.ldap=spring.ldap.core</arg>
                        </compilerArgs>
                        <verbose>true</verbose>
                    </configuration>
                </plugin>
            <plugin>
                <groupId>org.codehaus.mojo</groupId>
                <artifactId>exec-maven-plugin</artifactId>
                <version>1.6.0</version>
                <executions>
                    <execution>
                        <goals>
                            <goal>exec</goal>
                        </goals>
                        <configuration>
                            <executable>${java.home}/bin/java</executable>
                            <arguments>
                                <argument>-cp .</argument>
                                <argument>--module-path='${project.build.directory}/modules'</argument>
                                <argument>--module=${moduleName}/${mainClass}</argument>
                            </arguments>
                            <longModulepath>false</longModulepath>
                            <addResourcesToClasspath>true</addResourcesToClasspath>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>3.1.1</version>
                <executions>
                    <execution>
                        <id>copy-libs</id>
                        <phase>prepare-package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${project.build.directory}/modules</outputDirectory>
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>com.coderplus.maven.plugins</groupId>
                <artifactId>copy-rename-maven-plugin</artifactId>
                <version>1.0.1</version>
                <executions>
                    <execution>
                        <id>copy-target</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                       <sourceFile>${project.build.directory}/${project.build.finalName}.jar</sourceFile>
            <destinationFile>${project.build.directory}/modules/${project.build.finalName}.jar</destinationFile>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</profile>

然而,每次在Netbeans中运行项目时,我仍然会遇到这个错误。我错过什么了吗?

共有1个答案

闾丘选
2023-03-14

因此,经过无数次尝试,我终于发现NetBeans/Maven使用了错误的java。exe来运行程序,即使它们应该指向正确的可执行文件。我有一些Java程序需要32位版本的Java 8,因此我在我的计算机上安装了32位(默认)和64位的OpenJDK 8,以及64位的OpenJDK 11。

我最终发现Java11可执行文件确实有一个--add-export选项,尽管NetBeans和Maven都抱怨在使用Java8可执行文件时它不是一个选项。我最终更改了nbactions.xml文件以专门指向Java11可执行文件,它开始正常工作!

这是nbactions。xml文件:

<actions>
    <action>
    <actionName>run</actionName>
    <packagings>
        <packaging>jar</packaging>
    </packagings>
    <goals>
        <goal>process-classes</goal>
        <goal>org.codehaus.mojo:exec-maven-plugin:1.6.0:exec</goal>
    </goals>
    <activatedProfiles>
        <activatedProfile>default</activatedProfile>
    </activatedProfiles>
    <properties>
        <exec.args>--add-exports=java.naming/com.sun.jndi.ldap=spring.ldap.core --module-path='${project.build.directory}/modules' --module=${moduleName}/${mainClass}</exec.args>
        <exec.executable>C:\Program Files\AdoptOpenJDK\jdk-11.0.3.7-hotspot\bin\java</exec.executable>
    </properties>
</action>

以前的exec.executable如下所示:

 类似资料:
  • 我将anaconda3安装到了我的主目录中。这就是我在航站楼看到的: 我的。bash_profile看起来像这样: 导出路径= "/Users/spotter/anaconda 3/bin:$ PATH " 所以我不明白为什么无法识别conda。当我导航到anaconda3/bin时,那里有一个名为的文件,但即使我尝试在该路径中调用它,它仍然找不到。

  • 问题内容: 是否可以在每次执行循环时回显?例如: 我不想看到循环结束时打印所有内容,而是希望它每次都打印每个结果。 问题答案: 最终解决方案 这就是我发现的: Flush在Apache的mod_gzip或Nginx的gzip下不起作用,因为从逻辑上讲,它正在对内容进行gzip处理,并且这样做必须缓冲内容才能对其进行gzip处理。任何类型的Web服务器gzip压缩都会影响此。简而言之,在服务器端,我

  • 首先,我是node.js和discord.js的初学者。 我目前正在开发我自己的discord机器人,我想知道是否可以“存储”斜杠命令的数据。下面是我的意思的一个例子: 这是否可以在并在如下:

  • 问题内容: 我尝试使用PyInstaller在Windows 7下编译Python项目。该项目运行正常,没有问题,但是当我尝试对其进行编译时,结果将不起作用。尽管在编译过程中没有收到警告,但目录中的文件中有很多警告:warnmain.txt 我不是很了解这些警告,例如“没有名为numpy.pi的模块”,因为它不是模块而是数字。我从未尝试导入。我确实导入并明确。另外,我正在使用PyQt4。我认为错误

  • 我从Jupyter笔记本导入matplotlib,但得到以下错误。 设置: Python2 MacBook conda:4.3.30 跑完之后 它得到: 2.0.2np112py36_0 有些表扬我尝试过但失败了 1. 和显示 2. 和显示 推荐1和2来自此站点 没有安装名为matplotlib的模块 3. 和显示 已满足要求:matplotlib in./anaconda/lib/python3

  • 问题内容: 我开始金字塔式保护区时会得到以下堆栈跟踪: 从python REPL可以正常工作: 并从命令行导入: 删节的输出显示了我正在使用的内容: My设置为该树的根: 我在使用python 2.7的virtualenv中运行它。今天我一直在进行此工作,但我不知道问题出在哪里。一方面,对于之前出现的 一些 导入似乎还可以: __ (我将最后一行更改为绝对导入。不走运。) 我尝试过的事情: 重建v