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