Java 找不到符号和包

Java 找不到符号和包,java,Java,我正在尝试编译Github存储库。然而,当我在CMD上运行应用程序时,我得到了一个错误- GrammarVizGUI.java:4: error: package net.seninp.grammarviz.controller does not exist import net.seninp.grammarviz.controller.GrammarVizController; ^ GrammarVizGUI

我正在尝试编译Github存储库。然而,当我在CMD上运行应用程序时,我得到了一个错误-

    GrammarVizGUI.java:4: error: package net.seninp.grammarviz.controller does not exist
import net.seninp.grammarviz.controller.GrammarVizController;
                                       ^
GrammarVizGUI.java:5: error: package net.seninp.grammarviz.model does not exist
import net.seninp.grammarviz.model.GrammarVizModel;
                                  ^
GrammarVizGUI.java:6: error: package net.seninp.grammarviz.view does not exist
import net.seninp.grammarviz.view.GrammarVizView;
                                 ^
GrammarVizGUI.java:17: error: cannot find symbol
  private static GrammarVizModel model;
                 ^
  symbol:   class GrammarVizModel
  location: class GrammarVizGUI
GrammarVizGUI.java:20: error: cannot find symbol
  private static GrammarVizController controller;
                 ^
  symbol:   class GrammarVizController
  location: class GrammarVizGUI
GrammarVizGUI.java:23: error: cannot find symbol
  private static GrammarVizView view;
                 ^
  symbol:   class GrammarVizView
  location: class GrammarVizGUI
GrammarVizGUI.java:48: error: cannot find symbol
    model = new GrammarVizModel();
                ^
  symbol:   class GrammarVizModel
  location: class GrammarVizGUI
GrammarVizGUI.java:51: error: cannot find symbol
    controller = new GrammarVizController(model);
                     ^
  symbol:   class GrammarVizController
  location: class GrammarVizGUI
GrammarVizGUI.java:54: error: cannot find symbol
    view = new GrammarVizView(controller);
               ^
  symbol:   class GrammarVizView
  location: class GrammarVizGUI
9 errors

然而,仔细检查后,我发现许多包都存在于源代码中,多个文件夹中。我几乎没有运行Java代码的经验,因此我相信我一定是犯了一些愚蠢的错误。

缺少一些东西,让我们一步一步来:

缺少jar插件配置(程序集插件配置不足以在
MANIFEST.MF

将此插件配置添加到
profile
single

...
<profile>
    <id>single</id>
    <build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.5.4</version>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>net.seninp.grammarviz.GrammarVizGUI</mainClass>
                        </manifest>
                    </archive>
                    <!-- <filters> <filter>src/assembly/filter.properties</filter> </filters> 
                        <descriptors> <descriptor>src/assembly/distribution.xml</descriptor> </descriptors> -->
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id> <!-- this is used for inheritance merges -->
                        <phase>package</phase> <!-- bind to the packaging phase -->
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>net.seninp.grammarviz.GrammarVizGUI</mainClass>
                        </manifest>
                    </archive>
                    <!-- <filters> <filter>src/assembly/filter.properties</filter> </filters> 
                        <descriptors> <descriptor>src/assembly/distribution.xml</descriptor> </descriptors> -->
                </configuration>

            </plugin>
        </plugins>
    </build>
</profile>
...
它在
target
目录中创建2个
jar
文件:

grammarviz2-0.0.1-SNAPSHOT.jar
grammarviz2-0.0.1-SNAPSHOT-jar-with-dependencies.jar
java -jar grammarviz2-0.0.1-SNAPSHOT-jar-with-dependencies.jar
然后您需要运行应用程序(从
target
目录):

这个
jar
包含一个
MANIFEST.MF
文件(
/META-INF/MANIFEST.MF
),该文件是在上面的
pom.xml
中配置的,带有适当的条目,可以在不提供主类的情况下作为应用程序运行这个
jar

“在我的机器上工作”:


您需要创建具有依赖项的jar文件。在Intellij中,它是这样的:

文件->项目结构->工件->单击“+”->JAR-> 来自具有依赖项的模块


然后会出现一个小窗口,您必须在其中指定主方法具有的类,然后单击“确定”,并在项目结构中单击“确定”。然后构建工件并导航到工件文件夹,在该文件夹中,jar文件将在名为工件的项目输出文件夹中正常创建。

您使用Maven吗?我使用的是Java开发工具这个项目是使用ApacheMaven()编译的。它是Java的依赖管理器。它需要JDKrun@CircuitCraft明白了!谢谢你提供的信息你运行GrammarVizGUI了吗?谢谢zolv!我对你的答案投了赞成票,但因为我的声誉很低,所以可能看不到:)@Deepak GeorgeThomas您仍然可以选择您接受的我的答案:)我在任何地方都找不到MANIFEST.MF(如您的答案所述)。你能详细解释一下吗?我刚弄明白!谢谢索菲亚!我对你的答案投了赞成票,但由于我的声誉很低,可能看不到:)
java -jar grammarviz2-0.0.1-SNAPSHOT-jar-with-dependencies.jar
java version "1.8.0_201"
Java(TM) SE Runtime Environment (build 1.8.0_201-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.201-b09, mixed mode)

Linux Mint 18.3