Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java或JavaC一直说包未找到或不存在';不存在_Java_Maven_Import_Jar_Javac - Fatal编程技术网

Java或JavaC一直说包未找到或不存在';不存在

Java或JavaC一直说包未找到或不存在';不存在,java,maven,import,jar,javac,Java,Maven,Import,Jar,Javac,当我试图在Maven项目中运行Java文件时遇到了一个障碍。我在运行Java类的地方进行了设置,该类在使用RunExec运行Maven中的其余测试之前进行了一些设置。我可以在IDE工具(Eclipse)中很好地运行程序,但当我从CMD或Git Bash运行程序时,我不断收到错误,指出找不到ClassDef或包/导入不存在,(尽管它在IDE和Mvn命令中可以很好地测试类。我尝试使用Javac-cp。为了看看新设置是否能消除错误,但我也遇到了类似的错误。我四处寻找了几个不同的答案,它们要么不能解决问

当我试图在Maven项目中运行Java文件时遇到了一个障碍。我在运行Java类的地方进行了设置,该类在使用RunExec运行Maven中的其余测试之前进行了一些设置。我可以在IDE工具(Eclipse)中很好地运行程序,但当我从CMD或Git Bash运行程序时,我不断收到错误,指出找不到ClassDef或包/导入不存在,(尽管它在IDE和Mvn命令中可以很好地测试类。我尝试使用Javac-cp。为了看看新设置是否能消除错误,但我也遇到了类似的错误。我四处寻找了几个不同的答案,它们要么不能解决问题,要么使我的项目处于更糟糕的状态。现在,我不确定确切的cau是什么。)解决问题并确定解决此问题的最佳解决方案

以下是我的问题示例,我尝试编译一个连接到我要运行的java文件的java文件,该文件将运行Maven:

 $ javac -d build/classes -sourcepath src -cp target/classes src/AppiumDriverSetUp_Lib/XMLMaker.java
src\AppiumDriverSetUp_Lib\XMLMaker.java:28: error: package io.appium.java_client does not exist
import io.appium.java_client.AppiumDriver;
                            ^
src\AppiumDriverSetUp_Lib\XMLMaker.java:29: error: package io.appium.java_client does not exist
import io.appium.java_client.MobileElement;
                            ^
src\AppiumDriverSetUp_Lib\XMLMaker.java:49: error: cannot find symbol
        public void setupDriverXMLFile(List <AppiumDriver<MobileElement>> driverList) {
                                             ^
  symbol:   class AppiumDriver
  location: class XMLMaker
src\AppiumDriverSetUp_Lib\XMLMaker.java:49: error: cannot find symbol
        public void setupDriverXMLFile(List <AppiumDriver<MobileElement>> driverList) {
                                                          ^
  symbol:   class MobileElement
  location: class XMLMaker
src\AppiumDriverSetUp_Lib\XMLMaker.java:67: error: cannot find symbol
                        for(AppiumDriver<MobileElement> driver: driverList) {
                            ^
  symbol:   class AppiumDriver
  location: class XMLMaker
src\AppiumDriverSetUp_Lib\XMLMaker.java:67: error: cannot find symbol
                        for(AppiumDriver<MobileElement> driver: driverList) {
                                         ^
  symbol:   class MobileElement
  location: class XMLMaker
6 errors
基本测试包中的DriverTest:

import AppiumDriverSetUp_Lib.AppiumDriverSetup;
import AppiumDriverSetUp_Lib.XMLMaker;

public class DriverTest {

    public AppiumDriverSetup createDrivers = new AppiumDriverSetup();

    public XMLMaker makeFile = new XMLMaker();

    public static void main(String [] args) throws TransformerConfigurationException, IOException, InterruptedException {
        System.out.println("Setting up drivers:");

        DriverTest startTest = new DriverTest();
        startTest.driverFileSetup();
        startTest.runSuite();
    }

    public void driverFileSetup() throws IOException, TransformerConfigurationException, InterruptedException {
        createDrivers.makeList();
        makeFile.setupDriverXMLFile(createDrivers.getActiveList());
        makeFile.createDriverFile();
    }

    public void runSuite() throws IOException, InterruptedException {
        Runtime rt = Runtime.getRuntime();
        String cmd = "cmd /c mvn test -Dplat="+System.getProperty("plat");
        Process p = rt.exec(cmd);
        InputStream input = p.getInputStream();
        testFeed(input, System.out);
        p.waitFor();
    }

    public void testFeed(InputStream in, OutputStream out) throws IOException {
        while (true) {
            int c = in.read();
            if (c == -1) {
                break;
            }
            out.write((char)c);
        }
    }

}

在我的XMLMaker类中,它已经为AppiumDriver和MobileElement提供了正确的导入,这是IDE中正确的导入选项之一。如果我使用mvn运行它,则不会出现问题。我认为问题与我对该项目的依赖性有关。有人经历过这样的情况吗?

听起来就像你在通信中所做的一样在Eclipse中,您可能有对必要的JAR文件的引用

我的建议-如果您使用Maven来实现构建自动化(您应该这样做),那么应该完整地使用它,构建过程将自动为您完成所有这些


在您的情况下,我想只需确保javac知道在哪里可以找到XMLMaker的jar文件,并且可以找到必要的依赖项。

您可以用XMLMaker.java文件编辑您的问题吗?或者您也可以检查您在此类中指定的包名,这可能是导致此问题的原因。@GauravRai1512当然,我会编辑此问题要包含XMLMaker的Java文件,它在package:AppiumDriverSetUp_Lib和Driver Test中,它在package:BaseTest中。我将添加bash/cmd state类找不到的导入。这将更容易让Maven完成所有工作,但问题是我希望XMLMaker中调用的drivers.xml是动态的,取决于移动设备是什么已连接。当我试图在运行测试套件之前将其设置为运行时(@BeforeSuite)为了在同一运行时运行测试而对drivers.xml所做的任何更改,都不会在会话结束后更新。在做了一些研究之后,Maven对drivers.xml的原始值进行了某种静态引用,但drivers.xml没有进行任何更改。这种方法允许drivers.xml在我最后关闭PrintWriter时进行更新。发现解决方案使用Maven运行我的Java文件DriverTest。我可以运行:mvn exec:Java-Dexec.mainClass=“BaseTest.DriverTest”,它运行DriverTest,然后在安装后运行运行运行时exec:mvn测试。
$ javac -d build/classes -sourcepath src -cp target/classes src/BaseTest/DriverTest.java
src\BaseTest\DriverTest.java:29: error: cannot access AppiumDriver
                makeFile.setupDriverXMLFile(createDrivers.getActiveList());
                        ^
  class file for io.appium.java_client.AppiumDriver not found
1 error
import AppiumDriverSetUp_Lib.AppiumDriverSetup;
import AppiumDriverSetUp_Lib.XMLMaker;

public class DriverTest {

    public AppiumDriverSetup createDrivers = new AppiumDriverSetup();

    public XMLMaker makeFile = new XMLMaker();

    public static void main(String [] args) throws TransformerConfigurationException, IOException, InterruptedException {
        System.out.println("Setting up drivers:");

        DriverTest startTest = new DriverTest();
        startTest.driverFileSetup();
        startTest.runSuite();
    }

    public void driverFileSetup() throws IOException, TransformerConfigurationException, InterruptedException {
        createDrivers.makeList();
        makeFile.setupDriverXMLFile(createDrivers.getActiveList());
        makeFile.createDriverFile();
    }

    public void runSuite() throws IOException, InterruptedException {
        Runtime rt = Runtime.getRuntime();
        String cmd = "cmd /c mvn test -Dplat="+System.getProperty("plat");
        Process p = rt.exec(cmd);
        InputStream input = p.getInputStream();
        testFeed(input, System.out);
        p.waitFor();
    }

    public void testFeed(InputStream in, OutputStream out) throws IOException {
        while (true) {
            int c = in.read();
            if (c == -1) {
                break;
            }
            out.write((char)c);
        }
    }

}