GVKun编程网logo

运行ant build会给出“软件包org.junit不存在”(ant运行一直说我build不存在)

20

对于想了解运行antbuild会给出“软件包org.junit不存在”的读者,本文将是一篇不可错过的文章,我们将详细介绍ant运行一直说我build不存在,并且为您提供关于antbuild.xml文件

对于想了解运行ant build会给出“软件包org.junit不存在”的读者,本文将是一篇不可错过的文章,我们将详细介绍ant运行一直说我build不存在,并且为您提供关于ant build.xml文件不存在、Building R软件包和错误“ ld:找不到-lgfortran”、Eclipse 开发 Maven 项目提示:程序包 org.junit 不存在解决方案、eclipse 环境 JUnit 测试框架(junit.framework.* 与 org.junit.*)的有价值信息。

本文目录一览:

运行ant build会给出“软件包org.junit不存在”(ant运行一直说我build不存在)

运行ant build会给出“软件包org.junit不存在”(ant运行一直说我build不存在)

当我使用Java
IDE构建具有JUnit测试的项目(例如NetBeans)时,它们可以正常编译,但是当我尝试在IDE外部使用ant运行构建脚本时,出现错误“包org.junit不存在”。

答案1

小编典典

您应该将junit.jar添加到ant文件的classpath定义中。

有很多方法可以做到,例如:

<junit printsummary="yes" haltonfailure="yes">    <classpath>        <path refid="your.classpath.refid" />        <fileset dir="${junit.dir}">            <include name="**/junit.jar" />        </fileset>    </classpath>    ...</junit>

有关设置类路径的详细信息,请参见Ant手册。

ant build.xml文件不存在

ant build.xml文件不存在

在Windows 7中安装我的蚂蚁后。在cmd中,我键入 ant -v, 它给出了ant版本,但它也表示以下内容。

Buildfile: build.xml does not exist!
Build failed

系统中有什么问题。我该如何纠正这个问题?

Building R软件包和错误“ ld:找不到-lgfortran”

Building R软件包和错误“ ld:找不到-lgfortran”

如何解决Building R软件包和错误“ ld:找不到-lgfortran”?

|| 我正在尝试安装lars软件包。 Ubuntu 11.04 Natty 64位。从建筑物中我得到:
* installing *source* package âlarsâ ...
** libs
gfortran   -fpic  -O3 -pipe  -g -c delcol.f -o delcol.o
gcc -shared -o lars.so delcol.o -lgfortran -lm -L/usr/lib64/R/lib -lR
/usr/bin/ld: cannot find -lgfortran
collect2: ld returned 1 exit status
make: *** [lars.so] Error 1
ERROR: compilation Failed for package âlarsâ
gfortran已安装,当我运行
gfortran --version
时,我得到   gfortran --version GNU Fortran   (Ubuntu / Linaro 4.5.2-8ubuntu4)4.5.2
sudo ldconfig -v
给出错误   /sbin/ldconfig.real:无法统计/usr/lib/libgfortran.so:无此类文件或目录 我已经删除并重新安装了gfortran。我需要解决什么?     

解决方法

        对于Debian / Ubuntu系列,我们通常建议
 $ sudo apt-get install r-base-dev
因为它提取了编译通常所需的所有软件包。而且,由于自动化的软件包构建者依赖于此方法(以及其他基于软件包的Build-Depends),因此该方法一直受到测试。 listed4ѭ软件包也在此处列出;也许您以前的安装中的链接断开了,所以我也尝试
dpkg --purge gfortran; apt-get install gfortran
。也就是说,数十个R软件包(和R本身)都使用Fortran,因此这里不应该有任何魔术。     ,        尝试在Ubuntu 12.10 64位上安装CRAN软件包VGAM时遇到相同的问题。我已经安装了r-base-dev,但是Andrew Redd对Dirk Eddelbuettel的回答的第二条评论对我有用。 具体来说,我遇到了两个错误:
/usr/bin/ld: cannot find -lgfortran
/usr/bin/ld: cannot find -lquadmath
由行固定的:
sudo ln -s /usr/lib/x86_64-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libquadmath.so.0 /usr/lib/libquadmath.so
请注意,只需要第一行就可以解决原始帖子中的问题。第二行修复了我与lquadmath有关的其他错误。     ,        看起来其他建议已经解决了您的问题,但是您的问题也适用于我,但是在我的情况下解决方案有所不同。我的问题是我的gcc和g ++版本与gfortran版本不同。我使用以下内容来切换它们,以使它们都相同。 检查您拥有的gcc,g ++和gfortran版本:
g++ --version
gcc --version
gfortran --version
匹配它们,使它们都相同:
sudo update-alternatives --config g++
sudo update-alternatives --config gcc
sudo update-alternatives --config gfortran
就我而言,我只有一个版本的gfortran,因此我只是更改了g ++和gcc版本以匹配gfortran。     ,        在ubuntu 12.04,R3.1.0,x86 32位系统上安装R软件包minqa时遇到相同的问题(实际上这是插入符号软件包安装的一部分)。 解决者
sudo ln -s /usr/lib/i386-linux-gnu/libgfortran.so.3 /usr/lib/libgfortran.so
无法重新安装r-base-dev,并且由于所有依赖性,我也没有尝试重新安装gfortran。 根据系统/版本,
ls -l /usr/lib/libgfortran.so
检查链接是否存在/正确。     ,        我使用Centos,但无法获得r-base-dev。我还安装了gfortran,其版本与gcc和g ++的版本匹配;它仍然没有工作。但是,我通过创建creating12ѭ解决了这个问题,
cd ~
mkdir .R
touch Makevars
我找到了安装gfortran的目录(显然,问题是R找不到)
which gfortran
它说我在15英镑安装了gfortran。 然后我在
.R/Makevars
中添加了标记以告诉R使用:
F77 = /usr/bin/gfortran
FC = $F77
FLIBS = -L/usr/bin/gfortran
您可以通过以下方式编辑Makevars文件:
vi .R/Makevars
现在,您已进入可以编辑文本文件的“ 19”程序。输入
i
进行编辑;您将在终端窗口的底部看到
INSERT
。然后,您可以输入我上面所说的内容。要保存更改并退出
vi
,请按esc键,然后键入
:wq
。 我不确定我是否正确放置了FLIBS行,因为对于MacOS,这是非常不同的。在MacOS中,gfortran下有一个目录,该目录具有可链接到的库,但是
gfortran
显然不是Linux中的目录。至少这对我有用,并且还解决了ѭ25的问题,所以我顺利安装了需要gfortran的R软件包。     ,        就像我的案例(Amazon Linux EC2 AMI)一样,仅将其留在此处以供将来参考,问题仅在于符号链接的命名,而不在于其位置。
sudo ln -s /usr/lib64/libgfortran.so.3 /usr/lib64/libgfortran.so
sudo ln -s /usr/lib64/libquadmath.so.0 /usr/lib64/libquadmath.so
    ,        我不必安装任何库。发布对我有用的内容,也许对某人有用。 我有
~/.R/Makevars
定义要使用
CC=gcc-8
。 我的机器上的默认gcc是7.4.0,但是我安装了gcc-8。 同时,我没有gfortran 8,但只有7.4.0。 注释掉Makevars中的这一行会使编译回退到使用默认的gcc-7,然后它成功地使用了gfortran-7 lib。     ,        如果您使用的是gcc44,则需要:
yum install gcc44-gfortran
    ,        对于将来迷失的灵魂,它还有助于验证所有匹配的编译器版本(根据https://askubuntu.com/questions/276892/cannot-find-lgfortran)。在我的情况下,gcc和gfortran均为4.8.4,但g ++为4.6。     ,对于在Mac上访问此页面时遇到相同错误的任何人,请尝试以下操作: 安装Homebrew并运行:
brew install gcc
然后,创建一个包含内容的文件
~/.R/Makevars
(请注意,这对应于gcc版本9.1.0):
VER=-9
CC=gcc$(VER)
CXX=g++$(VER)
CFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
CXXFLAGS=-mtune=native -g -O2 -Wall -pedantic -Wconversion
FLIBS=-L/usr/local/Cellar/gcc/9.1.0/lib/gcc/9
R v3.6.0 海湾合作委员会v9.1.0 自制软件v2.1.6 macOS v10.14.5     

Eclipse 开发 Maven 项目提示:程序包 org.junit 不存在解决方案

Eclipse 开发 Maven 项目提示:程序包 org.junit 不存在解决方案

1、产生的问题:

maven 项目执行单元测试可以正常执行,但是执行 maven 命令 test,则报一下异常:

org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project support: Compilation failure: Compilation failure:
[ERROR] E:\workspace\support\src\test\java\com\test\spring\support\TestSpringContextHolder.java:[7,16] 错误: 程序包org.junit不存在
[ERROR] E:\workspace\support\src\test\java\com\test\spring\support\TestSpringContextHolder.java:[16,2] 错误: 找不到符号
[ERROR] 符号:   类 Test
[ERROR] 位置: 类 TestSpringContextHolder
[ERROR] E:\workspace\support\src\test\java\com\test\spring\support\TestSpringContextHolder.java:[29,2] 错误: 找不到符号
[ERROR] 符号:   类 Before
[ERROR] 位置: 类 TestSpringContextHolder
[ERROR] E:\workspace\support\src\test\java\com\test\spring\support\TestSpringContextHolder.java:[43,5] 错误: 找不到符号

  

2、产生上述错误的原因:

1)、maven 项目,单元测试和运行使用不同的 classpath,测试使用 test-classpath,运行使用 classpath;
2)、创建 maven 项目使用 junit 默认的版本为 3.8.1,它使用的是编程的方式,即使 maven dependencies 目录引入了 junit,但也无法使用,只能通过 build path 添加 junit 支持

<dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>

 

3、解决方案:

将 junit 的版本提高到 4.x,配置代码如下:

        <dependency>
            <groupId>junit</groupId> <artifactId>junit</artifactId> <!-- 默认的版本为3.8.1,修改为4.x,因为3.x使用的为编程的方式,4.x为注解的形式。 --> <version>4.11</version> <scope>test</scope> </dependency>

4、补充:我上面贴出的异常目录位于。。。\src\test\java\。。。, 不是。。。\src\main\java\。。。,处理方式如上,如果异常发生在 main 目录而不是 test 目录,同时 junit 版本是 4.x,解决方案则将 scope 属性去掉:

        <dependency>
            <groupId>junit</groupId> <artifactId>junit</artifactId> <!-- 默认的版本为3.8.1,修改为4.x,因为3.x使用的为编程的方式,4.x为注解的形式。 --> <version>4.11</version> <!-- 去掉scope作用域,使用默认的compile,编译、测试、运行都有效的作用域 --> <!--<scope>test</scope>--> </dependency>

解决思路参考:https://blog.csdn.net/javaloveiphone/article/details/52163396

eclipse 环境 JUnit 测试框架(junit.framework.* 与 org.junit.*)

eclipse 环境 JUnit 测试框架(junit.framework.* 与 org.junit.*)

如下所示,先通过 build path 导入 junit 环境依赖的 jar 包:


这里写图片描述

1. junit.framework.*

  • junit.framework.* 主要类和函数:
    • Test
    • TestCase
    • TestSuite

实现并运行(run as => Java Application,因其有 java 应用所需的入口函数:main 函数)如下的代码:

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;

import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import junit.textui.TestRunner;

public class FileReaderTester extends TestCase
{
    private FileReader input = null;

    public FileReaderTester(String name)
    {
        super(name);
    }

    protected void setUp()
    {
        try
        {
            input = new FileReader("data.txt");
        } catch (FileNotFoundException e)
        {
            e.printStackTrace();
        }
    }

    public void testRead() throws IOException
    {
        char ch = ''&'';
        for (int i = 0; i < 4; ++i)
        {
            ch = (char)input.read();
        }
        assertEquals(''d'', ch);
    }

    protected void tearDown()
    {
        try
        {
            input.close();
        } catch (IOException e)
        {
            e.printStackTrace();
        }
    }

    public static Test suite()
    {
        TestSuite suite = new TestSuite();
        suite.addTest(new FileReaderTester("testRead"));
        return suite;
    }

    public static void main(String[] args)
    {
        TestRunner.run(suite());
    }

}

2. org.junit.*

  • 待测试的功能类的工作,不依赖任何相关的测试类;
    • 可以独立运行;
    • 测试类的对象则是待测试的功能类;
    • 测试类构造的用例是为了保证待测试的功能类能够如期望的那样运行;
    • 测试类构造用例的对象是功能类的某一成员函数

这种类库层级形式,一般是通过 eclipse 界面操作完成的:

  • 完成功能类的开发;
  • 右键此待测类:
    • new => JUnit Test Case,选择 setUp, tearDown 等上下文函数;
    • next => 勾选待测类中的待测函数;
  • eclipse 自动生成相关代码;
  • 右键 run as => Junit Test

3. references

  • 在Eclipse中使用JUnit4进行单元测试(初级篇)

今天关于运行ant build会给出“软件包org.junit不存在”ant运行一直说我build不存在的讲解已经结束,谢谢您的阅读,如果想了解更多关于ant build.xml文件不存在、Building R软件包和错误“ ld:找不到-lgfortran”、Eclipse 开发 Maven 项目提示:程序包 org.junit 不存在解决方案、eclipse 环境 JUnit 测试框架(junit.framework.* 与 org.junit.*)的相关知识,请在本站搜索。

本文标签: