小编Man*_*dre的帖子

将 jakarta.mail 1.6.5 更新至 2.0.1

我正在尝试从 JakartaMail 1.6.5 迁移到 2.0.1,当我开始我的应用程序时,我得到了

Caused by: java.lang.ClassNotFoundException: javax.mail.internet.AddressException
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1364)
Run Code Online (Sandbox Code Playgroud)

我也尝试改变:

import javax.mail.MessagingException;
import javax.mail.internet.MimeMessage;
Run Code Online (Sandbox Code Playgroud)

import jakarta.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;
Run Code Online (Sandbox Code Playgroud)

但是,当我使用JavaMailSenderImpl mailSenderSpring 类时,例如:

 MimeMessage message = mailSender.createMimeMessage();
Run Code Online (Sandbox Code Playgroud)

它说:

Required type:
jakarta.mail.internet.MimeMessage
Provided:
javax.mail.internet.MimeMessage
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?Spring 支持 JakartaMail 2.0.1 吗?因为JavaMailSender处于spring-context-support中(我使用版本5.3.9)

java jakarta-mail

7
推荐指数
1
解决办法
7824
查看次数

Java内存泄漏与本机C和Fortran代码

我正在开发一个旧的java程序,其中包含一个带有Fortran调用的本机库.

所以,我有Java通过JNI调用C,然后调用Fortran.

在生产中,我们有一个内存不足的错误,如:

Native memory allocation (malloc) failed to allocate 120000 bytes for jfloat in C:\BUILD_AREA\jdk6_37\hotspot\src\share\vm\prims\jni.cpp
Run Code Online (Sandbox Code Playgroud)

我怀疑是内存泄漏.

我是公司的新手,我想在linux上工作,但他们让我在Windows上工作:(在生产中我们使用.so文件,因为我们在solaris上,我在Windows上使用DLL(逻辑上).

首先,我试图重现生产问题.因此,我创建了一个单元测试,它加载DLL并调用多次调用本机方法的java类.当我这样做时,我看到processExplorer.exe,内存每2秒增长到2MB.我在生产中也有例外.

我很高兴我成功地重现了这个问题,我可以说问题来自C或Fortran Code.

接下来,我尝试删除对Fortran的调用,我的java只调用C(没有Fortran,这个测试允许我查看问题是来自C还是Fortran.)

结果是记忆没有移动!凉!我可以说我对C中的malloc/free没有任何问题.

所以,我决定学习一点Fortran来查看代码.:)

我了解到在Fortran中我们可以使用allocate和deallocate关键字来玩内存.我的代码不包含这些关键字.:(

在所有这些之后,有人让我访问Solaris以启动我的junit测试,该测试调用Java-> JNI-> C => Fortran并使用.so而不是DLL.

而且意外 - 记忆没动!我在Solaris或RedHat下没有任何问题.

我被困了,因为生产中存在问题,但我无法清楚地重现它.:(

为什么我看到DLL和SO之间的区别?代码(java/C/Fortran)完全相同,因为编译它的是我.

我该如何调查更多?

我试图在Windows下进行内存转储,我重现了这个问题,但我什么也没看到.

是jvm中的问题吗?或者问题可能在通过JNI传递给C的对象中?

非常感谢帮助我解决这个问题.

信息:我使用的是Windows 7 64位

PS:我是法国人,请原谅我的英语.我每次都尽力做到最好.;)

这是C代码的标题:

    #ifndef unix 
       __MINGW_IMPORT void modlin_OM(float pmt[], float abaque[][], float don[][], float cond[], float res[][], int flag[]) ; 
    #else 
       extern void modlin_om_(float * pmt, float * abaque, float * don, float * cond, float * res, int …
Run Code Online (Sandbox Code Playgroud)

java memory fortran memory-leaks

6
推荐指数
1
解决办法
1094
查看次数

Mockito间谍方法不起作用

我遇到了mockito.spy方法的问题.

我最近到了一个"旧"项目,我的第一个任务是在其中添加mockito,并进行真正的单元测试:)

该项目存在许多概念问题,但这不是重点;)

我解释一下我的问题:

我上课了

public class Tutu{
  public Tutu(){
  }
}

public class Toto{
  public Toto(){
  }
  public int executeToto(Tutu tutu){
    //do some stuff
    return 5;
  }
}

public class Titi{
  private Toto toto;

  public Titi(){
     this.toto = new Toto();     
  }

  public void executeTiti(){
      //do some stuff
      Tutu tutu = new Tutu();
      int ret = this.toto.executeToto(tutu);
      //do some stuff
  }
}
Run Code Online (Sandbox Code Playgroud)

在我的测试类TitiTest.java中我想只测试executeTiti,我不想测试executeToto的东西,因为这个类有自己的测试类TotoTest.java.

但正如你所看到的,toto是在titi构造函数中实例化的,所以我尝试这样的事情:(我也在我的测试中使用PowerMock,所以我使用的是PowerMockRunner,但它似乎不是问题)

@RunWith(PowerMockRunner.class)
public class TitiTest {

 @Test
 public void testExecuteTiti(){
   Toto toto = Mockito.spy(new Toto());
   Mockito.doReturn(2).when(toto).executeToto(Mockito.any(Tutu.class));

   Titi …
Run Code Online (Sandbox Code Playgroud)

java mocking mockito spy

2
推荐指数
1
解决办法
2万
查看次数

Eclipse JAVA单独的单元测试和集成测试

我正在升级仅包含用JAVA编写的集成测试的项目。

现在我们要编写单元测试,所以我决定创建src / it / java文件夹以放置所有现有测试,并在src / test / java中编写新的单元测试

我使用surfire和build-helper来做到这一点。

在命令行中我可以运行

mvn全新安装,仅读取src / test / java目录进行测试

我在做什么

mvn -Pintegration-test全新安装,我看到已读取src / it / java中的测试以进行测试

因此所有命令都可以在命令行中正常运行。

现在,我想在eclipe上导入我的项目。当我这样做时,只有src / test / java用作源文件夹。如何设置pom.xml以将src / test / java和src / it / java作为源文件夹?

**这是我的构建器插件配置

<plugin>    
<groupId>org.codehaus.mojo</groupId>     
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.8</version>
<executions>         
    <execution>             
      <id>add-test-source</id>       
      <phase>process-resources</phase>             
      <goals>                 
           <goal>add-test-source</goal>             
      </goals>             
      <configuration>                 
             <sources>                     
       <source>src/it/java</source>                 
         </sources>             
      </configuration>         
    </execution>     
</executions>
</plugin> 
Run Code Online (Sandbox Code Playgroud)

非常感谢!

java eclipse maven

2
推荐指数
1
解决办法
1785
查看次数

标签 统计

java ×4

eclipse ×1

fortran ×1

jakarta-mail ×1

maven ×1

memory ×1

memory-leaks ×1

mocking ×1

mockito ×1

spy ×1