Netbeans 11:Java 项目中的多个源
Netbeans 11: multiple sources in a Java project
我正在尝试在 Java 项目的多个位置设置多个包层次结构。进一步说明:我们自己的软件在软件包 com.company.V2.*
中。我现在想添加这些外部存储库:
但与以前版本的 Netbeans 不同,似乎无法为这些单独的包指定多个目录。在 Project Properties、Sources 下,有一个设置 Source Folder,这是 com.company.V2.*
等级是。没有办法说 'for com.company look in /dir1/dir2; for org.freedesktop.dbus look in /dir4/dirZ etc.' 显然 Netbeans 可以 这样做,因为 类 在 java.lang.*
层次结构中找到了,例如 [=18] =]
有两种后果:
- 构建时Maven找不到源。
- 当我按住 Control 单击并在编辑器中显示多个错误时,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);否则我会得到一个 运行-time 错误,这向我表明 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 下变得异常复杂。我已经创建了符号链接,它们解决了上面给出的所有问题,但我更喜欢 'proper' 解决方案,而不是涉及 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>
我正在尝试在 Java 项目的多个位置设置多个包层次结构。进一步说明:我们自己的软件在软件包 com.company.V2.*
中。我现在想添加这些外部存储库:
但与以前版本的 Netbeans 不同,似乎无法为这些单独的包指定多个目录。在 Project Properties、Sources 下,有一个设置 Source Folder,这是 com.company.V2.*
等级是。没有办法说 'for com.company look in /dir1/dir2; for org.freedesktop.dbus look in /dir4/dirZ etc.' 显然 Netbeans 可以 这样做,因为 类 在 java.lang.*
层次结构中找到了,例如 [=18] =]
有两种后果:
- 构建时Maven找不到源。
- 当我按住 Control 单击并在编辑器中显示多个错误时,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);否则我会得到一个 运行-time 错误,这向我表明 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 下变得异常复杂。我已经创建了符号链接,它们解决了上面给出的所有问题,但我更喜欢 'proper' 解决方案,而不是涉及 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>