找不到符号和包装

时间:2019-03-21 20:19:46

标签: java

我正在尝试编译Github存储库https://github.com/GrammarViz2/grammarviz2_src。但是,当我在CMD上运行应用程序时,出现错误-

var newDate = moment.utc(dateToConvert).toDate();

但是,仔细检查后,我发现源中有多个文件夹中有许多软件包。我对运行Java代码的经验几乎为零,因此,我认为自己一定犯了一些愚蠢的错误。

2 个答案:

答案 0 :(得分:2)

缺少一些东西,让我们逐步进行:

缺少jar插件配置(程序集插件配置不足以在Main-Class中提供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>
...

然后您需要在构建期间使用此配置文件:

mvn -Psingle clean package
...
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 18.949 s
[INFO] Finished at: 2019-03-21T21:30:25+01:00
[INFO] Final Memory: 28M/435M
[INFO] ------------------------------------------------------------------------

它将在jar目录中创建2个target文件:

grammarviz2-0.0.1-SNAPSHOT.jar
grammarviz2-0.0.1-SNAPSHOT-jar-with-dependencies.jar

然后,您需要运行应用程序(从target目录):

java -jar grammarviz2-0.0.1-SNAPSHOT-jar-with-dependencies.jar

jar包含一个MANIFEST.MF文件(/META-INF/MANIFEST.MF),该文件已在pom.xml中进行了配置,并带有适当的条目以将该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

答案 1 :(得分:2)

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

  

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

然后会出现一个小窗口,您必须在其中指定main方法具有的类,然后单击ok,然后在项目结构中单击ok。然后构建工件,并导航到artifacts文件夹,在正常情况下,将在名为项目artifacts的projects文件夹中创建jar文件。