在命令行

时间:2017-03-13 17:35:11

标签: java maven command-line

我有以下项目。它在conf文件夹中有一些属性文件,数据文件夹中有一些数据,lib文件夹中有一些jar文件,还有一些由于大小限制而未在照片中显示的外部库。想象一下,我想运行RecDriver类。我应该如何设置类路径以便我可以在命令行中运行它?这就是我这样做的方法,但它不起作用,因为它无法使项目中的其他文件更好。

C:\Users\myUserName\Downloads\librec-2.0.0\librec-2.0.0\core\src\main\java\net\librec\tool\driver>  javac RecDriver.java

该项目可以在这里下载:

https://github.com/guoguibing/librec

project structure

3 个答案:

答案 0 :(得分:1)

您可以使用bin / librec或bin / librec.cmd从命令行运行它。

如果您想构建启动命令,可以查看这些启动脚本并根据您的需要进行调整。

答案 1 :(得分:0)

要通过命令行运行您的应用程序,一旦您在某个目录(通常是构建版本)中有.class文件,您所要做的就是使用java -cp "path where jvm can find every .class that you project needs" MainClass运行您的应用程序。

-cp标志只告诉在哪里查找已编译的.class文件,因为您使用的是IntellIJ,您可以看到它在执行程序时运行的命令,它有一个使用的类路径。

类路径指向.class文件所在的位置,它们可以位于不同的文件夹中,但是在给出类路径时需要包含每个目录,用";"

分隔

从SO中的另一个问题中取得的例子。

  

java -cp" Test.jar; lib / *" my.package.MainClass

答案 2 :(得分:0)

要做的三件事:

  1. Use the Maven Shade Plugin创建一个胖jar(带依赖的jar)
  2. Use the Maven-Jar-Plugin制作Jar可执行文件
  3. <project><build><finalName>设为${artifactId}
  4. 现在,在您的构建成功运行后,您可以使用

    运行您的应用
    java -jar target/YourArtifactId.jar
    

    (用&#34; YourArtifactId&#34代替你的项目&artifactId;)

    好的,这是完整的设置。 将这样的构建部分添加到pom.xml(将其与任何现有的部分合并)。

    <build>
        <plugins>
          <!-- number 1 -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-shade-plugin</artifactId>
            <version>3.0.0</version>
            <executions>
              <execution>
                <phase>package</phase>
                <goals>
                  <goal>shade</goal>
                </goals>
                <configuration>
                  <minimizeJar>true</minimizeJar>
                </configuration>
              </execution>
            </executions>
          </plugin>
    
          <!-- number 2 -->
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>3.0.2</version>
            <configuration>
              <archive>
                <manifest>
                  <addClasspath>true</addClasspath>
                  <mainClass>fully.qualified.MainClass</mainClass>
                </manifest>
              </archive>
            </configuration>
          </plugin>
        </plugins>
    
        <!-- number 3 -->
        <finalName>${project.artifactId}</finalName>
    </build>