Good day! Help understand the reason - the case is: Wicket + CDI + Glassfish4 + JEE7
beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/beans_1_1.xsd" bean-discovery-mode="all"> </beans> pom.xml
<properties> <wicket.core.version>7.1.0</wicket.core.version> <wicket.cdi.version>7.1.0</wicket.cdi.version> </properties> <build> <finalName>atbs-ui</finalName> <!--<directory>E:\projects\big_data\at-project-base-station\vagrant\app\containers\glassfish\webapps</directory>--> </build> <dependencies> <dependency> <groupId>ru.atbs</groupId> <artifactId>atbs-model</artifactId> <version>1.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>ru.atbs</groupId> <artifactId>atbs-core</artifactId> <version>1.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-core</artifactId> <version>${wicket.core.version}</version> </dependency> <dependency> <groupId>org.apache.wicket</groupId> <artifactId>wicket-cdi-1.1</artifactId> <version>${wicket.cdi.version}</version> <exclusions> <exclusion> <artifactId>wicket-core</artifactId> <groupId>org.apache.wicket</groupId> </exclusion> </exclusions> </dependency> </dependencies> Part of the MenuPanel class
public class MenuPanel extends Panel { @Inject private MenuItemHelper menuItemHelper; @Inject private Logger logger; public MenuPanel(String componentId) { super(componentId); initListView(); } private void initListView() { List<MenuCategory> menuCategoryList = menuItemHelper.createMenuItems(); ListView<MenuCategory> contacts = new ListView<MenuCategory>("menuItems", menuCategoryList) { protected void populateItem(ListItem<MenuCategory> item) { item.add(new Label("menuItem", item.getModelObject().getLabel())); } }; add(contacts); } MenuItemHelper
public class MenuItemHelper { private static final String PAGE = "Page"; private static final String SEPARATOR = "."; private static final String PAGE_PACKAGE = "ru.cs.vsu.wicket.pages"; @Inject private MenuItemDao menuItemDao; @Inject private Logger logger; public List<MenuCategory> createMenuItems() { List<MenuCategory> items = new ArrayList<MenuCategory>(); List<MenuItem> menuItems = menuItemDao.listAll(); Collections.sort(menuItems, new Comparator<MenuItem>() { @Override public int compare(MenuItem o1, MenuItem o2) { return o1.getSortIndex().compareTo(o2.getSortIndex()); } }); for(MenuItem item : menuItems) { try { items.add(new MenuCategory(Model.of(item.getName()), getClassPage(item))); } catch (ClassNotFoundException e) { try { logger.info(new String("Не удалось загрузить один из пунктов меню".getBytes("UTF-8"))); } catch (UnsupportedEncodingException e1) { logger.info(e.getMessage()); } logger.info(e.getMessage()); } } return items; } private Class<? extends Page> getClassPage(MenuItem item) throws ClassNotFoundException { return (Class<Page>)Class.forName(PAGE_PACKAGE + SEPARATOR + item.getCode() + PAGE); } } MenuCategory
public class MenuCategory implements Serializable { private final IModel<String> label; private final Class<? extends Page> page; public MenuCategory(IModel<String> textLabel, Class<? extends Page> page) { this.label = textLabel; this.page = page; } public IModel<String> getLabel() { return label; } public Class<? extends Page> getPage() { return page; } } When initListView() executed, initListView() get this exception:
org.jboss.weld.exceptions.IllegalArgumentException: WELD-000070 Simple bean [EnhancedAnnotatedTypeImpl] class cannot be a non-static class
Something remotely similar google / saw - someone referred to cdi. I tried different versions of the wicket - the problem is the same. Maybe my code is not correct? Please help