Вот код, иллюстрирующий java.lang.NoClassDefFoundError
. Пожалуйста, см. ответ Джареда для подробного объяснения.
NoClassDefFoundErrorDemo.java
public class NoClassDefFoundErrorDemo {
public static void main(String[] args) {
try {
// The following line would throw ExceptionInInitializerError
SimpleCalculator calculator1 = new SimpleCalculator();
} catch (Throwable t) {
System.out.println(t);
}
// The following line would cause NoClassDefFoundError
SimpleCalculator calculator2 = new SimpleCalculator();
}
}
SimpleCalculator.java
public class SimpleCalculator {
static int undefined = 1 / 0;
}
Вот как я это сделал:
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false)]
public class SwaggerControllerNameAttribute : Attribute
{
public string ControllerName { get; private set; }
public SwaggerControllerNameAttribute(string ctrlrName)
{
if (string.IsNullOrEmpty(ctrlrName))
{
throw new ArgumentNullException("ctrlrName");
}
ControllerName = ctrlrName;
}
}
А затем добавьте следующий код в конфигурацию:
configuration.EnableSwagger(c =>
{
c.GroupActionsBy(apiDesc =>
{
var attribute = apiDesc.GetControllerAndActionAttributes<SwaggerControllerNameAttribute>();
if (attribute.Any())
{
return attribute.First().ControllerName;
}
else
{
return apiDesc.ActionDescriptor.ControllerDescriptor.ControllerName;
}
});
}
И тогда вы можете сделать это:
[ 112]