[英]Netbeans 11: multiple sources in a Java project
我試圖在 Java 項目的多個位置有多個 package 層次結構。 進一步解釋:我們自己的軟件在包com.company.V2.*
中。 我現在想添加這些外部存儲庫:
但與以前版本的 Netbeans 不同,似乎無法為這些單獨的包指定多個目錄。 在Project Properties , Sources下,有一個設置Source Folder ,這是com.company.V2.*
層次結構所在的位置。 沒有辦法說'對於 com.company 看 /dir1/dir2; 對於 org.freedesktop.dbus,請查看 /dir4/dirZ 等。 顯然 Netbeans可以做到這一點,因為例如在java.lang.*
層次結構中的類被發現。
有兩個后果:
我已將兩個外部存儲庫簽出到項目根目錄中。 我通過將其添加到 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.