首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Netbeans 11: Java项目中的多个源

Netbeans 11: Java项目中的多个源
EN

Stack Overflow用户
提问于 2019-11-20 23:36:44
回答 1查看 349关注 0票数 0

我试图在Java项目中的多个位置拥有多个包层次结构。进一步解释一下:我们自己的软件在com.company.V2.*软件包中。现在,我想添加以下外部存储库:

但与以前版本的Netbeans不同,似乎无法为这些单独的包指定多个目录。在“项目属性”、“源”下,有一个设置“源”文件夹,即com.company.V2.*层次结构所在的位置。没有办法说:“对于com.company,查看/dirZ 1/dirZ 2;对于org.freedesktop.dbus,查看/dirZ 4/dirZ等显然,Netbeans可以做到这一点,例如,可以在java.lang.*层次结构中找到类。

有两个后果:

  • 当我构建时,Maven无法找到源代码。
  • Netbeans无法找到源代码时,我控制-单击,并显示多个错误的编辑器窗口,与方法,有错误的参数等。

我已经将两个外部存储库签入项目根目录。我将以下内容添加到POM中,从而解决了Maven问题:

代码语言:javascript
复制
        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>build-helper-maven-plugin</artifactId>
            <version>1.7</version>
            <executions>
                <execution>
                    <id>add-source</id>
                    <phase>generate-sources</phase>
                    <goals>
                        <goal>add-source</goal>
                    </goals>
                    <configuration>
                        <sources>
                            <source>dbus-java/dbus-java/src/main/java</source>
                            <source>kk-dbus-nm-java/src/main/java</source>
                        </sources>
                    </configuration>
                </execution>
            </executions>
        </plugin>

但这并不能修复编辑器窗口错误。它甚至没有正确地修复Maven问题,因为在每次源更改之后都需要清理和重建(shift-F11);否则我会得到一个运行时错误,这表明Maven并不总是在相同的位置找到东西:

代码语言:javascript
复制
Exception in thread "main" java.lang.ExceptionInInitializerError
Caused by: java.lang.RuntimeException: Uncompilable source code - Erroneous sym type: org.freedesktop.dbus.connections.impl.DBusConnection.addSigHandler
    at com.company.V2.net.Wifi.openBusConnection(Wifi.java:38)
    at com.company.V2.net.Wifi.<clinit>(Wifi.java:23)

解决所有这些问题的一种方法是使用符号链接,这样Maven和Netbeans就可以看到一个层次结构中的所有包,但遗憾的是,我们必须支持Windoze / NTFS上的开发人员,并且以典型的MS方式支持开发人员,在Windoze下,简单的符号链接变得非常复杂。我已经创建了符号链接,它们解决了上面给出的所有问题,但是我更喜欢一个‘适当’的解决方案,而不是一个涉及麻烦解决方案的解决方案。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-10 00:37:43

为了其他人的注意,这是我目前所拥有的最好的。

我的项目实际上只直接依赖于org.freedesktop.NetworkManager,而后者又依赖于org.freedesktop.dbus。因此,在我的项目pom.xml中,我有:

代码语言:javascript
复制
<repositories>
  <repository>
    <id>kk-dbus-nm-java</id>
    <name>NetworkManager</name>
    <url>file:///home/myself/projects/kk-dbus-nm-java</url>
  </repository>
</repositories>

代码语言:javascript
复制
<dependency>
  <groupId>kkdev.dbus</groupId>
  <artifactId>org.freedesktop</artifactId>
  <version>1.0-KKDev</version>
</dependency>

那么/home/myself/projects/kk-dbus-nm-java/pom.xml是:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>kkdev.dbus</groupId>
    <artifactId>org.freedesktop</artifactId>
    <version>1.0-KKDev</version>
    <packaging>jar</packaging>    
    <dependencies>
        <dependency>
            <groupId>com.github.hypfvieh</groupId>
            <artifactId>dbus-java</artifactId>
            <version>3.2.0</version>
        </dependency>
    </dependencies>    
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
</project>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58965041

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档