繁体   English   中英

Netbeans 11:Java 项目中的多个源

[英]Netbeans 11: multiple sources in a Java project

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

但与以前版本的 Netbeans 不同,似乎无法为这些单独的包指定多个目录。 Project PropertiesSources下,有一个设置Source Folder ,这是com.company.V2.*层次结构所在的位置。 没有办法说'对于 com.company 看 /dir1/dir2; 对于 org.freedesktop.dbus,请查看 /dir4/dirZ 等。 显然 Netbeans可以做到这一点,因为例如在java.lang.*层次结构中的类被发现。

有两个后果:

  • Maven 构建时找不到源。
  • Netbeans 在我控制单击时找不到源,并在编辑器中显示多个错误 windows 与具有错误参数的方法等有关。

我已将两个外部存储库签出到项目根目录中。 我通过将其添加到 POM 中修复了 Maven 问题:

        <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>

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

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 下变得异常复杂. 我已经创建了符号链接,它们解决了上面给出的所有问题,但我更喜欢“正确”的解决方案,而不是涉及到 hacky 解决方法的解决方案。

为了其他人看,这是我迄今为止最好的。

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

<repositories>
  <repository>
    <id>kk-dbus-nm-java</id>
    <name>NetworkManager</name>
    <url>file:///home/myself/projects/kk-dbus-nm-java</url>
  </repository>
</repositories>

<dependency>
  <groupId>kkdev.dbus</groupId>
  <artifactId>org.freedesktop</artifactId>
  <version>1.0-KKDev</version>
</dependency>

然后/home/myself/projects/kk-dbus-nm-java/pom.xml是:

<?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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM