- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我在 Eclipse 中有一个项目,它是一个 WebService
项目 REST API,我还在 Configure Build path -> Add Project
中添加了另一个项目,我还添加了另一个项目在我的 API 方法中,我正在调用 TestNGCreator
类,如下所示。
基本上这个项目使用 java 中的 jersey 框架来创建 REST API,当我调用任何特定方法时,即执行它将调用另一个驻留在另一个项目中的类,我在这个项目的构建路径中添加了项目,我的其他方法工作正常但是当我从不同的项目调用方法时出现此错误。
我是否需要在 POM.xml 或其他地方声明一些我正在使用此类和此方法的地方
我需要通过调用此 TestNGCreator.main(null);
来运行自动化我的另一个项目是 java 中的自动化项目 TestNGCreator
类驻留在自动化项目中。通过调用此方法,我需要调用上面的类,当我这样做时出现错误。
错误:
May 17, 2019 4:20:51 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet [Jersey Web Application] in context with path [/webservices] threw exception [org.glassfish.jersey.server.ContainerException: java.lang.NoClassDefFoundError: org/testng/TestNG] with root cause
java.lang.ClassNotFoundException: org.testng.TestNG
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1955)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1798)
at testDrivers.TestNGCreator.runTestNGTest(TestNGCreator.java:44)
at testDrivers.TestNGCreator.main(TestNGCreator.java:165)
at com.xyz.webservices.Resource.executeScript(Resource.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:143)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:160)
at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:158)
at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:97)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347)
at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102)
at org.glassfish.jersey.server.ServerRuntime$2.run(ServerRuntime.java:303)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:317)
at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:286)
at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1072)
at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:399)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:494)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1137)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:317)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
文件:Resource.java
@POST
@Path("/execute")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response executeScript(String data) throws JSONException
{
ArrayList<Object> testCases = new ArrayList<Object>();
JSONArray jsonArray = new JSONArray();
JSONObject json = new JSONObject(data);
String configFile = (String) json.get("ConfigFiles");
String sheetName = (String) json.get("Sheetname");
jsonArray = (JSONArray) json.get("testCases");
for (int i = 0 ; i < jsonArray.length() ; i++)
{
testCases.add(jsonArray.get(i));
}
try {
TestNGCreator.main(null); //here i am calling that class main method
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Response response = null;
System.out.println(jsonArray);
System.out.println(testCases);
return response;
}
文件:TestNGCreator.java
package testDrivers;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.testng.TestNG;
import org.testng.xml.XmlClass;
import org.testng.xml.XmlSuite;
import org.testng.xml.XmlTest;
import projlib.Globals;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.Iterator;
import org.apache.poi.xssf.usermodel.XSSFCell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellType;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class TestNGCreator
{
public void runTestNGTest() throws IOException
{
System.out.println("Print this line in console");
//Create an instance on TestNG
TestNG myTestNG = new TestNG();
//Create an instance of XML Suite and assign a name for it.
XmlSuite mySuite = new XmlSuite();
mySuite.setName(Globals.SUITE_NAME);
//Create a list of XmlTests and add the Xmltest you created earlier to it.
List<XmlTest> myTests = new ArrayList<XmlTest>();
XSSFSheet excelWSheet = null;
XSSFWorkbook excelWBook = null;
XSSFCell cell = null;
XSSFRow row = null;
Double dblCellVal;
String strCellVal = null;
Boolean blnCellVal;
FileInputStream excelFile = new FileInputStream(Globals.CONFIG_FILE_DIR+"/CropRecordConfig.xlsx");
excelWBook = new XSSFWorkbook(excelFile);
excelWSheet = excelWBook.getSheet("CropAdd");
Iterator <Row> rowIterator = excelWSheet.iterator();
//Iterator <Cell> cellIterator = row.cellIterator();
String testName = null;
int colCount;
if (rowIterator.hasNext())
{
row = (XSSFRow) rowIterator.next();
colCount = row.getPhysicalNumberOfCells();
}
while (rowIterator.hasNext())
{
row = (XSSFRow) rowIterator.next();
Iterator <Cell> cellIterator = row.cellIterator();
int curCell = 0;
while (cellIterator.hasNext())
{
cell = (XSSFCell) cellIterator.next();
curCell++;
switch (cell.getCellType())
{
case Cell.CELL_TYPE_NUMERIC:
dblCellVal = cell.getNumericCellValue();
strCellVal = dblCellVal.toString();
break;
case Cell.CELL_TYPE_STRING:
strCellVal = cell.getStringCellValue();
break;
case Cell.CELL_TYPE_BOOLEAN:
blnCellVal = cell.getBooleanCellValue();
strCellVal = blnCellVal.toString();
break;
}
//If it is first cell then store the Test Name
if (cell.getColumnIndex()== 0)
{
testName = strCellVal;
}
if (curCell == 5) {
if (strCellVal.equals("1.0")) {
//Adding to suite
//Create an instance of XmlTest and assign a name for it.
XmlTest myTest = new XmlTest(mySuite);
myTest.setName(testName);
//Add any parameters that you want to set to the Test.
Map<String, String> testngParams = new HashMap<String,String> ();
testngParams.put("testId", testName);
myTest.setParameters(testngParams);
//Create a list which can contain the classes that you want to run.
List<XmlClass> myClasses = new ArrayList<XmlClass> ();
myClasses.add(new XmlClass("TestDriver"));
//Assign that to the XmlTest Object created earlier.
myTest.setXmlClasses(myClasses);
//Adding the test to test list created earlier
myTests.add(myTest);
break;
}
}
}
}
excelWBook.close();
//add the list of tests to your Suite.
mySuite.setTests(myTests);
//Add the suite to the list of suites.
List<XmlSuite> mySuites = new ArrayList<XmlSuite>();
mySuites.add(mySuite);
//Set the list of Suites to the testNG object you created earlier.
myTestNG.setXmlSuites(mySuites);
File file = new File(Globals.TESTNG_FILE_NAME);
System.out.println("File is: " + file);
FileWriter writer = new FileWriter(file);
writer.write(mySuite.toXml());
writer.close();
//invoke run() - this will run your class.
//myTestNG.run();
}
public static void main(String args[]) throws IOException
{
TestNGCreator testDriver = new TestNGCreator();
testDriver.runTestNGTest();
}
}
文件:POM.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xyz</groupId>
<artifactId>webservices</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<name>webservices</name>
<build>
<finalName>webservices</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.5.1</version>
<inherited>true</inherited>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
</plugins>
</build>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey</groupId>
<artifactId>jersey-bom</artifactId>
<version>${jersey.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.glassfish.jersey.containers</groupId>
<artifactId>jersey-container-servlet</artifactId>
<!-- use the following artifactId if you don't need servlet 2.x compatibility -->
<!-- artifactId>jersey-container-servlet</artifactId -->
</dependency>
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
</dependency>
<!-- uncomment this to get JSON support-->
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-moxy</artifactId>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20080701</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.15</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.15</version>
</dependency>
</dependencies>
<properties>
<jersey.version>2.16</jersey.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
如有任何建议,我们将不胜感激^.^
最佳答案
我在你的 pom 文件中没有看到 test-ng 依赖项。请添加以下内容并尝试。
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.10</version>
<scope>test</scope>
</dependency>
关于java - org.glassfish.jersey.server.ContainerException : java. lang.NoClassDefFoundError : org. testng.TestNG?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56148031/
如何将 glassfish 服务器的所有配置保存到另一个 glassfish 服务器? 最佳答案 看到这个问题:GlassFish v3 - portability of settings glass
我安装了 JDK 1.6 b45 并尝试运行 glassfish v2.2。当我尝试启动它时,总是会抛出以下错误: [#|2013-06-18T08:50:20.196+0200|WARNING|su
glassfish 访问日志位于哪里?我希望它们位于domains/domainX/logs 中。我需要更改设置才能激活访问日志记录吗? 谢谢 最佳答案 路径似乎正确,请查看此链接 http://bl
我想在没有互联网连接的情况下升级 Glassfish。但我已经下载了最新版本。 我已完成以下步骤, 例如。 galssfish-3.0 是旧版本,glassfish-3.1 是新版本。 步骤:1我刚刚
我在 Windows 8.1 中启动 glassfishs 服务时遇到问题 我得到了这个错误: c:\glassfishv3\bin>asadmin 创建服务 Found the Windows Se
我们最近切换到 Glassfish 3.1.2.2,并将几个 Web 应用程序打包为 war 文件。有时,这些应用程序所需的上下文根不同于文件名。 回到我们使用 Weblogic 时,我们通过在 we
我只是测试在 glassfish 服务器队列上发送消息,因此我在 glassfish 服务器上创建了 JMSResource,如下所示: 现在我已经在 Netbeans IDE 中创建了一个 Java
我想知道 GlassFish 项目是死了还是还活着?从一开始,我就非常喜欢玻璃鱼。我开始使用 GlassFish2 进行项目,并且有很多客户使用 GlassFish3。 几个月以来,我尝试将我的一些项
我使用 Glassfish 应用服务器,根据 README 文件,它只是说打开 CMD,键入一些命令,但我得到了 Nullpointer。我需要有人帮助我。我在 Windows 上。 asadmin
我最近将 Glassfish 从 3.1.2 更新到 4.0,并想设置一个我以前在我的应用程序上使用过的 JDBCRealm,它使用基于 FORM 的身份验证。密码在数据库中使用 SHA-256 散列
您如何确定正在运行哪个版本的GlassFish服务器? 该命令: /var/glassfish/bin/asadmin version ...回: Version = Sun Java System
所以,基本上: 在 RHEL 6.2 和 Java 6 上有一个独立的(无集群)Glassfish 3.1.2 新安装,没有任何部署的应用程序(真正的新安装)。 我第一次在服务器上启动了默认域 dom
我有一个带有 Glassfish 应用程序服务器的 EJB WEB 应用程序。 现在我想要像这样“/”的上下文根。 我当前的网址是“http://localhost:8080/Make ” 但我想要这
我正在尝试在 Windows 7 64 位上安装带有 Eclipse 的 GlassFish 4。一切正常,但是当我尝试设置服务器 root 时会发生以下情况(目录存在): 最佳答案 Glassfis
如何使用密码文件更改 Glassfish 域的管理员密码?我知道在提示时手动输入密码的传统方法。 但是,我想使用脚本更改管理员密码,而无需手动输入密码。 最佳答案 这是可能的,但如果您想以最简单的方式
我想在Glassfish 3.1中设置JDBC领域,并且关注此博客http://blog.gamatam.com/2009/11/jdbc-realm-setup-with-glassfish-v3.
我在远程机器上运行 Glassfish。是否有从命令提示符以 Debug模式启动 GF 的命令?远程机器运行 Ubuntu 10.04,我的机器运行 Windows 7(不确定这是否重要)。 我连接没
我们每周都会发布新的生产代码,Glassfish 没有遇到任何问题。这个周末我们不得不在我们的托管服务提供商处移动机架。没有任何代码更改(它们只是关闭电源、移动、重新安装和打开电源)但是我们在一个新的
对于生产环境,Apache Geronimo 是否更适合使用 ActiveMQ、Derby、Solr 的应用程序? 最佳答案 简而言之,如果您想要一个轻量级部署容器,请使用 Geronimo(它基于
我正在尝试设置一个备用文档根目录,以便提供上传的文档。我已将以下内容包含在我的 glassfish web xml 中 /dom 然后,我在名为 cars.pdf 的 Test 文件夹中存储了一
我是一名优秀的程序员,十分优秀!