Network Security Internet Technology Development Database Servers Mobile Phone Android Software Apple Software Computer Software News IT Information

In addition to Weibo, there is also WeChat

Please pay attention

WeChat public account

Shulou

What are the exceptions in java development

2025-01-18 Update From: SLTechnology News&Howtos shulou NAV: SLTechnology News&Howtos > Development >

Share

Shulou(Shulou.com)06/02 Report--

This article mainly explains "what are the exceptions in java development". The content in the article is simple and clear, and it is easy to learn and understand. Please follow the editor's train of thought to study and learn "what are the exceptions in java development".

Abnormal

Arithmetic exception class: ArithmeticExecption null pointer exception class: NullPointerException type cast exception: ClassCastException array negative subscript exception: NegativeArrayException array subscript out of bounds exception: ArrayIndexOutOfBoundsException violation of security principle exception: SecturityException file ended exception: EOFException file did not find exception: FileNotFoundException string conversion to numeric exception: NumberFormatException operation database exception: SQLException input and output exception: IOException method did not find exception: NoSuchMethodException

Java.lang.nullpointerexception

We must often encounter this exception. The explanation of the exception is "the program has encountered a null pointer". To put it simply, it calls an uninitialized object or an object that does not exist. This error often occurs in the operation of creating a picture and calling an array, such as an uninitialized picture or a path error when the image is created.

Null pointers appear in array operations, which in many cases are common mistakes made by some friends who are just beginning to learn programming, that is, they confuse the initialization of arrays with the initialization of array elements. The initialization of the array is to allocate the required space to the array, and after initialization, the elements in the array are not instantiated and are still empty, so each element needs to be initialized (if called).

Java.lang.classnotfoundexception

This exception is a common problem for many programmers who were originally developed in jb and other development environments to compile packages under jb under wtk. The interpretation of the exception is that "the specified class does not exist". Here, we mainly consider whether the name and path of the class are correct. If you do the package under jb, it is usually added by default, so you should pay attention to add the path of package after you go to wtk.

Java.lang.arithmeticexception

The explanation of this exception is "mathematical operation anomaly". For example, such an exception will occur when an operation such as dividing by zero occurs in the program. For this exception, we should carefully check the areas where mathematical operations are involved in our program. Is there something wrong with the formula?

Java.lang.arrayindexoutofboundsexception

I believe many friends have often encountered this exception. The explanation of the exception is "array subscript is out of bounds". Now most programs have operations on arrays, so you must check carefully when you call an array to see if the subscript you call is out of the range of the array. Generally speaking, it is not easy to make such an error when calling (that is, directly using a constant as a subscript). However, implicit (that is, subscript with variables) calls often go wrong, and in another case, the length of the array defined in the program is determined by some specific method, not declared in advance. At this time, it is best to check the length of the array first to avoid this exception.

Java.lang.illegalargumentexception

The explanation of this exception is "method parameter error". Methods in many j2me class libraries will cause such an error in some cases. For example, if the volume parameter in the volume adjustment method is written as a negative number, this exception will occur, such as the three values in the g.setcolor (int red,int green,int blue) method. If there are more than 255, this exception will also occur, so once this exception is found. All we have to do is quickly check to see if there is an error in the parameter passing in the method call.

Java.lang.illegalaccessexception

This exception is interpreted as "no access", which occurs when the application wants to call a class, but the current method does not have access to the class. Pay attention to this exception if package is used in the program.

There are many other exceptions, I will not list them one by one. What I want to say is that a qualified programmer needs to have a good understanding of the common problems in the program and corresponding solutions, otherwise, if he only stays in writing the program without changing the program, it will greatly affect his own development. A full description of the exception can be found in api.

Java.lang.AbstractMethodError

Abstract method error. Thrown when the application attempts to call an abstract method.

Java.lang.AssertionError

The assertion is wrong. Used to indicate the failure of an assertion.

Java.lang.ClassCircularityError

Class cyclic dependency error. When initializing a class, the exception is thrown if a circular dependency between classes is detected.

Java.lang.ClassFormatError

The class format is incorrect. Thrown when the Java virtual machine attempts to read a Java class from a file and detects that the contents of the file do not match the valid format of the class.

Java.lang.Error

Mistake. Is the base class for all errors and is used to identify serious program running problems. These problems usually describe anomalies that should not be captured by the application.

Reason:

1. The external resources accessed by the system are not closed, resulting in a large amount of waste of external resources, which may eventually lead to the normal operation of the system.

two。 Too many times to shut down the external resources accessed by the system, and the external system cannot handle it properly.

3. An exception occurred in the external resources accessed by the system.

Solution:

1. Before accessing an external resource, first check whether the resource, such as a database, can be connected or operated properly.

two。 When accessing external resources, if a connection is made, be sure to close and close only once.

3. Try to share external resources in the same operation so as to reduce the consumption of resources and improve the execution efficiency of the program.

Java.lang.ExceptionInInitializerError

Initialization program error. Thrown when an exception occurs during the execution of a class's static initialization program. A static initialization program is a segment of static statement that is directly contained in a class.

Java.lang.IllegalAccessError

Illegal access error. This exception is thrown when an application attempts to access, modify, or call the Field of a class, but violates the visibility declaration of the domain or method.

Java.lang.IncompatibleClassChangeError

Incompatible class change error. This exception is thrown when there is an incompatible change in the class definition on which the executing method depends. Generally, it is easy to cause this error when you modify the declaration definition of some classes in the application without recompiling the whole application.

Java.lang.InstantiationError

Instantiation error. This exception is thrown when an application attempts to construct an abstract class or interface through the new operator of Java.

Java.lang.InternalError

Internal error. Used to indicate that an internal error occurred in the Java virtual machine.

Java.lang.LinkageError

Link error. The error and all its subclasses indicate that a class depends on some other class. After the class is compiled, the dependent class changes its class definition without recompiling all the classes, thus causing an error.

Java.lang.NoClassDefFoundError

Class definition error not found. This error is thrown when the Java virtual machine or class loader tries to instantiate a class and cannot find the definition of the class.

Java.lang.NoSuchFieldError

There are no errors in the domain. This error is thrown when the application attempts to access or modify a domain of a class and there is no definition of that domain in the definition of the class.

Java.lang.NoSuchMethodError

There are no errors in the method. This error is thrown when the application attempts to call a method of a class and there is no definition of the method in the definition of the class.

Java.lang.OutOfMemoryError

Out of memory error. This error is thrown when there is not enough memory available for the Java virtual machine to allocate to an object.

Java.lang.StackOverflowError

Stack overflow error. This error is thrown when the level of an application recursive call is too deep to cause a stack overflow.

Java.lang.ThreadDeath

Thread ends. This error is thrown when the stop method of the Thread class is called to indicate the end of the thread.

Java.lang.UnknownError

Unknown error. Used to indicate an unknown critical error condition occurred in the Java virtual machine.

Java.lang.UnsatisfiedLinkError

Unsatisfied link error. Thrown when the Java virtual machine does not find a class declared as the native language definition of the native method.

Java.lang.UnsupportedClassVersionError

The unsupported class version is incorrect. This error is thrown when the Java virtual machine attempts to read a class file from, but finds that the major and minor version numbers of the file are not supported by the current Java virtual machine.

Java.lang.VerifyError

Validation error. This error is thrown when the validator detects an internal incompatibility or security problem in a class file.

Java.lang.VirtualMachineError

Virtual machine error. Used to indicate that the virtual machine is corrupted or that there are insufficient resources to continue the operation.

Java.lang.ArithmeticException

The arithmetic condition is abnormal. For example: integer divided by zero and so on.

Java.lang.ArrayIndexOutOfBoundsException

Array index out of bounds exception. Thrown when the index of the array is negative or greater than or equal to the size of the array.

Java.lang.ArrayStoreException

Array storage exception. Thrown when a non-array declaration type object is stored in an array.

Java.lang.ClassCastException

Class shape exception. If there are classes An and B (An is not a parent or subclass of B) and O is an instance of A, this exception is thrown when O is forced to be constructed as an instance of class B. This exception is often referred to as a cast exception.

Java.lang.ClassNotFoundException

Class exception not found. This exception is thrown when the application attempts to construct a class based on a class name in the form of a string, and the class file with the corresponding name cannot be found after traversing the CLASSPAH.

Java.lang.CloneNotSupportedException

Cloning exceptions is not supported. When the Cloneable interface is not implemented or the cloned method is not supported, the exception is thrown by calling its clone () method.

Java.lang.EnumConstantNotPresentException

There is no exception to the enumeration constant. This exception is thrown when an application attempts to access an enumeration object by name and enumeration type, but the enumeration object does not contain a constant.

Java.lang.Exception

Root exception. Used to describe what the application wants to capture.

Java.lang.IllegalAccessException

Illegal access exception. This exception is thrown when the application attempts to create an instance of a class, access the properties of the class, and call the method of the class through reflection, but cannot access the definition of the class, property, method, or constructor at that time.

Java.lang.IllegalMonitorStateException

Illegal surveillance status is abnormal. This exception is thrown when a thread tries to wait for a monitor of an object (O) that it does not own or tells other threads to wait for that object (O).

Java.lang.IllegalStateException

The state of breaking the law is abnormal. The exception is thrown when the method is called in the Java environment and the application is not in the legitimate calling state of the method.

Java.lang.IllegalThreadStateException

Illegal thread state exception. When the county is not in the legal state of calling a method, and the method is called, an exception is thrown.

Java.lang.IndexOutOfBoundsException

Index out of bounds exception. The exception is thrown when the index value accessing a sequence is less than 0 or greater than or equal to the sequence size.

Java.lang.InstantiationException

Instantiate the exception. This exception is thrown when an attempt is made to create an instance of a class that is an abstract class or interface through the newInstance () method.

Java.lang.InterruptedException

Aborted exception. This exception is thrown when a thread is in a long wait, sleep, or other paused state while another thread terminates the thread through the Thread's interrupt method.

Java.lang.NegativeArraySizeException

Array size is a negative exception. This exception is thrown when an array is created with a negative size value.

Java.lang.NoSuchFieldException

There are no exceptions to the property. This exception is thrown when a non-existent property of a class is accessed.

Java.lang.NoSuchMethodException

There is no exception to the method. This exception is thrown when a non-existent method of a class is accessed.

Java.lang.NullPointerException

Null pointer exception. This exception is thrown when the application attempts to use null where the object is required. For example, call the instance method of the null object, access the properties of the null object, calculate the length of the null object, use the throw statement to throw the null, and so on.

Java.lang.NumberFormatException

The number format is abnormal. This exception is thrown when an attempt is made to convert an String to the specified numeric type and the string does not meet the format required by the numeric type.

Java.lang.RuntimeException

Runtime exception. Is the parent class of exceptions that can be thrown during normal operation of all Java virtual machines.

Java.lang.SecurityException

Security exception. Thrown by the security manager to indicate an exception that violates the security condition.

Java.lang.StringIndexOutOfBoundsException

String index out of bounds exception. The exception is thrown when an index value is used to access a character in a string that is less than 0 or greater than or equal to the sequence size.

Java.lang.StringIndexOutOfBoundsException

String out of bounds errors and other string class related errors

Code snippet 4:

String s_all_power = "1010011"; String s_access_power = s_all_power.substring (3Jing 4)

Description:

The function of the above code snippet function is to get the fourth character in the string s_all_power.

Description:

In general, the program will not have a problem, if for some reason, the s_all_power length becomes shorter, the program will throw a string error.

Solution: the string is truncated (substring, charAt) and converted to a byte array (getBytes). When converting a character array into a string (valueOf), check the existence (empty) and length of the string object before performing the operation.

Can be rewritten:

String s_all_power = "1010011"; if (s_all_power.length > 4) String s_access_power = s_all_power.substring (3pr 4); java.lang.TypeNotPresentException

There is no exception to the type. The exception is thrown when the application attempts to access the type as a string representation of the name of the type, but cannot find the type based on the given name. This exception differs from ClassNotFoundException in that it is an unchecked (not checked) exception, while ClassNotFoundException is a checked (checked) exception.

Java.lang.UnsupportedOperationException

Unsupported method exception. An exception indicating that the requested method is not supported.

Abnormal

Javax.servlet.jsp.JspException: Cannot retrieve mapping for action / Login (/ Login is your action name)

Possible reasons

Action is not defined in struts-config.xml, or no matching action is found, for example, used in JSP files

-

Abnormal

Org.apache.jasper.JasperException: Cannot retrieve definition for form bean null

Possible reasons

This exception is due to the fact that Struts did not find the form bean expected by action based on the mapping in struts-config.xml. Most of the cases may be due to a mismatch between the name property set in form-bean and the name property set in action.

In other words, action and form should each have a name attribute that matches exactly, including case. This error also occurs when there is no name attribute associated with action, and if no name attribute is specified in action, then no name attribute is associated with action.

Of course, when action makes some controls, such as jumping to the corresponding jsp page based on parameter values instead of processing form data, there is no need for the name attribute, which is one of the ways to use action.

-

Abnormal

No action instance for path / xxxx could be created

Possible reasons

Special note: because there are many situations that can lead to this error, it is recommended that you increase the log / debug level of your web server so that you can see the potential error when trying to create an action class in more information, an action class that you have set up in struts-config.xml

< action>

Label).

There are many reasons why the action class specified by the class attribute of the action tag in struts-config.xml cannot be found, such as locating the compiled. Class file failed. Failure to place compiled .class file for the action in the classpath (in web development, class is located in r WEB-INF/classes, so your action class must be in this directory. For example, if your action class is located in WEB-INF/classes/action/Login.class, it is action.Login when you set the property type of action in struts-config.xml.

Spelling mistakes also occur from time to time, and are not easy to find. Pay special attention to the case of the first letter and the name of the package.

-

Abnormal

Javax.servlet.jsp.JspException: No getter method for property username of bean org.apache.struts.taglib.html.BEAN

Possible reasons

There is no variable in the bit form bean that defines the getter method

This error mainly occurs in the FormBean of the form submission, and when marked with struts, there must be a getUsername () method in the FormBean. Notice the letter "U".

-

Abnormal

Java.lang.NoClassDefFoundError: org/apache/struts/action/ActionForm

Possible reasons

This error mainly occurs when the corresponding Java .class file cannot be found in classpath. If this error occurs during the run time of the web application, it is mainly because the specified class file is not in the classpath of web server (/ WEB-INF/classes and / WEB-INF/lib). In the above error, the reason is that the ActionForm class cannot be found.

-

Abnormal

Javax.servlet.jsp.JspException: Exception creating bean of class org.apache.struts.action.ActionForm: {1}

Possible reasons

Instantiating Struts-provided ActionForm class directly instead of instantiating a class derived off ActionForm. This mightoccur implicitly if you specify that a form-bean is this Struts ActionForm class rather than specifying a child of this classfor the form-bean.

Not associating an ActionForm-descended class with an action can also lead to this error.

-

Abnormal

Javax.servlet.jsp.JspException: Cannot find ActionMappings or ActionFormBeans collection

Possible reasons

Either tags that identify Struts actionServlet or tags that map .do extensions or both are not declared in web.xml.

Typos or spelling errors in struts-config.xml can also cause this exception. For example, the closing symbol / > of a tag is missing. It's best to check it out using the struts console tool.

In addition, the load-on-startup must declare in the web.xml that this is either an empty tag or a numeric value that is used to indicate the priority of the servlet to run. The higher the value, the lower the priority.

Another thing related to using load-on-startup is that this exception can also be caused when precompiling JSP files using Struts.

-

Abnormal

Java.lang.NullPointerException at org.apache.struts.util.RequestUtils.forwardURL (RequestUtils.java:1223)

Possible reasons

The forward element in struts-config.xml is missing the path attribute.

-

Abnormal

Javax.servlet.jsp.JspException: Cannot find bean org.apache.struts.taglib.html.BEAN in any scope

Probable Causes

An attempt was made to use child elements of form outside the form tag of Struts. This often happens when you use the html tag of Struts later. In addition, it is important to note that you may inadvertently use non-subject tags, such as, so that the web server parses as a no-body tag, and all subsequent tags are considered to be outside this tag, such as the use of taglib to introduce HTML tag libraries, the value of the prefix you use is not html.

-

Abnormal

Javax.servlet.jsp.JspException: Missing message for key xx.xx.xx

Probable Causes

The value pair for this key is not defined in the resource file ApplicationResources.properties. If you often encounter this situation when using eclipse, when the project is recompiled, eclipse will automatically delete the resource files in the classes directory.

The resource file ApplicationResources.properties is not in classpath. You should put the resource file in the WEB-INF/classes directory (of course, it should be defined in struts-config.xml)

-

Abnormal

Cannot find message resources under key org.apache.struts.action.MESSAGE

Possible reasons

Obviously, this error occurred when using the resource file, and Struts did not find the resource file.

Implicitly trying to use message resources that are not available (such as using empty html:options tag instead of specifyingthe options in its body-- this assumes options are specified in ApplicationResources.properties file)

XML parser issues-too many, too few, incorrect/incompatible versions

-

Abnormal

Strange and seemingly random characters in HTML and on screen, but not in original JSP or servlet.

Possible reasons

Mixing Struts's html:form tags with standard HTML tags is incorrect.

The encoding style used is not supported on this page.

-

Abnormal

"Document contained no data" in Netscape

No data rendered (completely empty) page in Microsoft Internet Explorer

Possible reasons

Use a derived class of Action without implementing the perform () method or the execute () method. The perform () method is implemented in Struts1.0, and the execute () method is implemented in Struts1.1, but Struts1.1 is backward compatible with the perform () method. But you use Struts1.1 to create a derived class of Action and implement the execute () method, and if you run it in Struts1.0, you get the error message "Document contained nodata" error message in Netscape or a completely empty (no HTML whatsoever) page rendered in Microsoft Internet Explorer. "

-

Abnormal

ServletException: BeanUtils.populate

Solution

An javax.servlet.ServletException: BeanUtils.populate exception was encountered while uploading a file with Struts.

I don't use BeanUtils utility classes for my ActionServlet. Later, a careful examination of the code found that the form in the jsp file forgot to add enctype= "multipart/form-data". Therefore, when writing a program that encounters an error or exception, you should consider the possibility of the problem in many ways and think of something other than the information prompted by the system.

-

1. After defining Action, if name is specified, a FormBean with the same name must be defined for form mapping.

two。 If "No input attribute for mapping path..." appears when the page is submitted after the Action is defined Error, you need to define the redirected page in its input property.

3. If "Batch update row count wrong:..." appears when inserting new data Error, it means that the type of key specified in XXX.hbm.xml is the original type (int, long), because this type automatically assigns a value, and this value often makes the system think that the record already exists, and the correct way is to use java.lang.Integer or java.lang.Long objects.

4. If there is a "argument type mismatch" error when inserting data, you may be using special objects such as Date, because struts cannot automatically convert string to date, so you need to manually convert string to date in Action.

5. In Hibernate, Query's iterator () is much faster than the list () method.

6. If a "equal symbol expected" error occurs, your strtus tag contains another tag or variable

-

Error: Exception in thread "main" org.hibernate.exception.SQLGrammarException: Could not execute JDBC batch update cause and solution: because Hibernate Tools (or Eclipse's own Database Explorer) generates an attribute such as catalog= "* *" (* represents the name of the data library) in the * .hbn.xml tool, you can delete it.

-

Error: org.hibernate.ObjectDeletedException: deleted object would be re-saved by cascade (remove deleted object from associations)

Causes and solutions:

Method 1: delete the cascade of the set side

Method 2, after solving the association relationship, delete

Method 3 adds cascade to the many-to-one side, but the value cannot be none

Last resort:

Check to see if hashCode equals uses id as the only tagging option; I have no problem using uuid.hex; but with native, it doesn't work, what should I do? Delete it!

-

Problem: using Tomcat 5.5.12 today, I found that the system that used to be very useful could not be used. Repeated tests found that the page could not contain taglib. Otherwise, the following prompt appears: HTTP Status 500-type Exception reportMessage description The server encountered an internal error () that prevented it from fulfilling this request.exceptionorg.apache.jasper.JasperException: / index.jsp (1Magne1) Unable to read TLD "META-INF/tlds/struts-bean.tld" from JAR file "file:*/WEB-INF/lib/struts.jar":

Reason: the jar under the lib folder for the project has been updated, and servlet.jar and jsp-api.jar have been released at the time of release.

Solution: deleting jsp-api.jar solves this problem.

-

Error: java.lang.NullPointerException

Reason: it is found that dao instances, manage instances and other things that need to be injected have not been injected (commonly known as null pointer exception): at this time, you should check the log file; the default is the log file of the application server, for example, Tomcat is [Tomcat installation directory] / logs. You will find a prompt:

It could be: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sf' defined in ServletContextresource [/ WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception isorg.hibernate.HibernateException: could not configure from URL: file:src/hibernate.cfg.xmlorg.hibernate.HibernateException: could not configure from URL: file:src/hibernate.cfg.xml... .Caused by: java.io.FileNotFoundException: src\ hibernate.cfg.xml

It may be: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined inServletContext resource [/ WEB-INF/applicationContext.xml]: Initialization of bean failed; nested exception isorg.hibernate.MappingException: Resource: com/mcc/coupon/model/UserRole.hbm.xml not foundorg.hibernate.MappingException: Resource: com/mcc/coupon/model/UserRole.hbm.xml not found

Then you know that the reason is that there is an error in the parsing of the configuration file, which is not visible through the Web page. It's more of a persistent mapping file error; it doesn't get parsed; of course, the features you need can't be used.

-

Error: StandardWrapperValve [action]: Servlet.service () for servlet action threw exception

Javax.servlet.jsp.JspException: Cannot retrieve mapping for action / settlementTypeManage

Or: type Status report message Servlet action is not available description The requested resource (Servlet action is not available) is not available.

Reason: ditto

-

Error

StandardWrapperValve [jsp]: Servlet.service () for servlet jsp threw exceptionjava.lang.ClassNotFoundException: org.apache.struts.taglib.bean.CookieTei

Specific description of interface error:

Org.apache.jasper.JasperException: Failed to load or instantiate TagExtraInfo class: org.apache.struts.taglib.bean.CookieTei

Reason and solution: if the tag at the beginning of your "html:" is not in one to restart your application server, there will be no such problem automatically.

-

Java.lang.IllegalStateException: getOutputStream () has already been called for this respons

Reason: there is out.write ("") in the servlet code generated by the web container, which is the same as 1. 0 in JSP. The call to response.getOutputStream () produces a conflict. That is, the Servlet specification states that you cannot call both response.getOutputStream () and response.getWriter (). No matter which one is called first, IllegalStateException should be thrown when calling the second time, because in jsp, the out variable is actually obtained through response.getWriter, and your program uses both response.getOutputStream and out variables, so the above error occurs.

two。 Because jsp container calls the releasePageContet method to release the PageContext object used after processing the request, and the getWriter method is called at the same time, this exception is caused because the getWriter method conflicts with the getOutputStream method related to the use of streams in the jsp page.

Solution:

/ output the image to the page ImageIO.write (image, "JPEG", response.getOutputStream ()); add 2 sentences; out.clear (); / / meaning: clear the cached content out = pageContext.pushBody (); / / return a new BodyContent (representing the BODY part of a HTML page) / / save the object out of the JspWriter instance / / update the contents of the out property of PageContext

-

Bad number

Reason: the version of the project is not compatible with the version of JDK

Solution: windows-preferences-server-Integrated Sandbox-Myeclise tomcat 6-choose a JDK that is the same as the project version

-

Connection reset by peer: socket write error

Reason

This problem is generally that the client cancels the connection before the connection is fully established. For example, the user presses the "stop" button on the browser. Generally speaking, there is no problem. But if it occurs frequently, it means that the response time for many clients to connect to the Apache server is too long, which may be due to network problems or server performance problems.

There may be some problems with your network connection, your data transmission may be due to waiting for too long, but the connection check time limit set by the server section is certain, then this situation may occur!

But the more common reasons are:

1: the number of concurrent connections of the server exceeds its carrying capacity, and the server will Down some of these connections

2: the client closes the browser, and the server is still sending data to the client.

3: Stop is pressed on the browser.

4: the server responded to the client and the result was blocked by the firewall.

Thank you for reading, the above is the content of "what are the exceptions in java development". After the study of this article, I believe you have a deeper understanding of what are the exceptions in java development, and the specific use needs to be verified in practice. Here is, the editor will push for you more related knowledge points of the article, welcome to follow!

Welcome to subscribe "Shulou Technology Information " to get latest news, interesting things and hot topics in the IT industry, and controls the hottest and latest Internet news, technology news and IT industry trends.

Views: 0

*The comments in the above article only represent the author's personal views and do not represent the views and positions of this website. If you have more insights, please feel free to contribute and share.

Share To

Development

Wechat

© 2024 shulou.com SLNews company. All rights reserved.

12
Report