I'm very new to next.js.
previously, I use webpack, and make config from scratch.
webpack build make the only bundle.js in dist directory (only one bundled js file)
and I make a project with next.js from scratch.
but now I tried npm run build, It makes too many files.
with Webpack, I only need an index.html and one bundled js file,
but, now I have no idea how to use and test with this many files.
Is there any wrong with me?
.
├── build-manifest.json
├── cache
│ └── webpack
│ ├── client-development
│ │ ├── 0.pack
│ │ ├── 1.pack
│ │ ├── 10.pack
│ │ ├── 11.pack
│ │ ├── 12.pack
│ │ ├── 13.pack
│ │ ├── 14.pack
│ │ ├── 15.pack
│ │ ├── 16.pack
│ │ ├── 2.pack
│ │ ├── 3.pack
│ │ ├── 4.pack
│ │ ├── 5.pack
│ │ ├── 6.pack
│ │ ├── 7.pack
│ │ ├── 8.pack
│ │ ├── 9.pack
│ │ ├── index.pack
│ │ └── index.pack.old
│ ├── client-production
│ │ ├── 0.pack
│ │ └── index.pack
│ ├── server-development
│ │ ├── 0.pack
│ │ ├── 1.pack
│ │ ├── 10.pack
│ │ ├── 11.pack
│ │ ├── 2.pack
│ │ ├── 3.pack
│ │ ├── 4.pack
│ │ ├── 5.pack
│ │ ├── 6.pack
│ │ ├── 7.pack
│ │ ├── 8.pack
│ │ ├── 9.pack
│ │ ├── index.pack
│ │ └── index.pack.old
│ └── server-production
│ ├── 0.pack
│ └── index.pack
├── react-loadable-manifest.json
├── server
│ ├── pages
│ │ ├── _app.js
│ │ ├── _document.js
│ │ ├── _error.js
│ │ └── index.js
│ ├── pages-manifest.json
│ └── webpack-runtime.js
└── static
├── chunks
│ ├── amp.js
│ ├── main.js
│ ├── node_modules_next_dist_client_dev_noop_js.js
│ ├── pages
│ │ ├── _app.js
│ │ ├── _error.js
│ │ └── index.js
│ ├── polyfills.js
│ ├── react-refresh.js
│ └── webpack.js
├── development
│ ├── _buildManifest.js
│ └── _ssgManifest.js
└── webpack
├── 496129cd3e9c913aa9ff.webpack.hot-update.json
└── webpack.496129cd3e9c913aa9ff.hot-update.js
13 directories, 58 files
Here is my next.config.js
const path = require('path');
module.exports = {
distDir: 'dist',
webpack: function (config, options) {
config.experiments = {};
return config;
},
sassOptions: {
includePaths: [path.join(__dirname, 'styles')],
},
env: {
API_KEY: process.env.API_KEY,
AUTH_DOMAIN: process.env.AUTH_DOMAIN,
PROJECT_ID: process.env.PROJECT_ID,
STORAGE_BUCKET: process.env.STORAGE_BUCKET,
MESSAGING_SENDER_ID: process.env.MESSAGING_SENDER_ID,
APP_ID: process.env.APP_ID,
}
};
package.json script
"scripts": {
"dev": "next dev",
"build": "next build",
"start": "next start",
"lint": "next lint"
},
Related
This question already has an answer here:
Why is my specific css code changes not being reflected on my browser?
(1 answer)
Closed 2 years ago.
So I am noticing that my css changes are not being reflected. They were originally working when I first created the files but I'm not sure what I did because it's not reflecting changes anymore. I did a hard-reload and cleared the cache but still nothing. Like I can literally delete the css file and my badge which I'm trying to edit is still there... it only goes away once I take it off of base.html directly. So what is going on here? I have a static folder in my app, with a css folder and then my css/notification file. I tried doing collectstatic through terminal but that doesn't do anything. Also, I already have my load static tag in my html. And, my css file is indeed loading when I go to inspect element and the changes are showing up within that file but they are not showing up within my browser. Any idea what's going on here? Nothing I do seems to be working!
ps: Changing STATICFILES_DIR to STATICFILES_DIRS doesn't do anything.
base.html/header
<link rel="stylesheet" href="{% static 'css/notification.css' %}" type="text/css" class = "notification"/>
base.html/body
<a class= text-danger href="{% url 'dating_app:conversations' user.id %}" type="text/css" class="notification">
<span>Inbox</span>
<span class="badge">{% unread_messages request.user %}</span>
</a>
notification.css
.notification {
text-decoration: none;
padding:50;
position: relative;
display: inline-block;
}
.notification .badge {
position: absolute;
top: 50px;
right: -25px;
padding: 20px 20px;
border-radius: 100%;
background: white !important;
color: white;
}
settings.py
STATIC_URL = '/static/'
STATICFILES_DIR = [
"/DatingAppCustom/dating_app/static",
]
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'dating_app/media')
settings.py/installed_apps
'django.contrib.staticfiles'
urls project
urlpatterns = [
path('admin/', admin.site.urls),
path('', include('dating_app.urls', namespace= 'dating_app')),
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
**edit/ directory **
.
├── 11_env
│ ├── bin
│ │ ├── __pycache__
│ │ ├── activate
│ │ ├── activate.csh
│ │ ├── activate.fish
│ │ ├── django-admin
│ │ ├── django-admin.py
│ │ ├── easy_install
│ │ ├── easy_install-3.7
│ │ ├── pip
│ │ ├── pip3
│ │ ├── pip3.7
│ │ ├── python -> python3
│ │ ├── python3 -> /Library/Frameworks/Python.framework/Versions/3.7/bin/python3
│ │ └── sqlformat
│ ├── include
│ ├── lib
│ │ └── python3.7
│ └── pyvenv.cfg
├── dating_app
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ ├── admin.cpython-37.pyc
│ │ ├── forms.cpython-37.pyc
│ │ ├── models.cpython-37.pyc
│ │ ├── tests.cpython-37.pyc
│ │ ├── urls.cpython-37.pyc
│ │ └── views.cpython-37.pyc
│ ├── admin.py
│ ├── apps.py
│ ├── chat.html
│ ├── forms.py
│ ├── media
│ │ └── profile_photo
│ ├── migrations
│ │ ├── 0001_initial.py
│ │ ├── 0002_auto_20200410_2231.py
│ │ ├── 0003_auto_20200411_2011.py
│ │ ├── 0004_auto_20200413_1930.py
│ │ ├── 0005_auto_20200413_1946.py
│ │ ├── 0006_auto_20200413_2222.py
│ │ ├── 0007_auto_20200422_1947.py
│ │ ├── 0008_auto_20200425_0039.py
│ │ ├── 0009_auto_20200426_1957.py
│ │ ├── 0010_auto_20200426_2005.py
│ │ ├── 0011_auto_20200426_2005.py
│ │ ├── 0012_auto_20200426_2007.py
│ │ ├── 0013_auto_20200427_1846.py
│ │ ├── 0014_auto_20200503_1947.py
│ │ ├── 0015_auto_20200503_2011.py
│ │ ├── 0016_auto_20200511_0104.py
│ │ ├── __init__.py
│ │ └── __pycache__
│ ├── models.py
│ ├── static
│ │ ├── css
│ │ ├── fonts
│ │ ├── images
│ │ └── js
│ ├── tag.py
│ ├── templates
│ │ └── dating_app
│ ├── templatetags
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ └── unread_messages_counter.py
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── dating_project
│ ├── __init__.py
│ ├── __pycache__
│ │ ├── __init__.cpython-37.pyc
│ │ ├── settings.cpython-37.pyc
│ │ ├── urls.cpython-37.pyc
│ │ └── wsgi.cpython-37.pyc
│ ├── asgi.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── db.sqlite3
├── manage.py
├── requirements.txt
└── static
├── admin
│ ├── css
│ ├── fonts
│ ├── img
│ └── js
├── css
│ ├── notification.css
│ └── style.css
└── images
├── cupids_corner_logo.jpg
└── matching_cupid.png
Can you try changing this
STATIC_URL = '/static/'
STATICFILES_DIR = [
"/DatingAppCustom/dating_app/static",
]
to:
STATIC_URL = '/static/'
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "dating_app/static"),
]
as recommended in the docs
I am trying to get a django web site into production. The dev version works fine, but in production the application does not seem to find my css files.
I know that there are a lot of queries similar to mine and I have perused many and tried the suggested solutions.
The production version seems to work perfectly apart from the static files issue
In settings.py I have
DEBUG=False
and
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static_files')
I have run
python manage.py collectstatic
and the css and js directories are copied correctly into my_app/static_files
I have restarted the server but it still does not function correctly.
My tree on the production server is:
.
├── my_app
│ ├── __init__.py
│ ├── settings.py
│ ├── static
│ │ ├── css
│ │ │ ├── main.css
│ │ └── js
│ ├── templates
│ │ ├── base.html
│ ├── urls.py
│ └── wsgi.py
├── boards
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ └── __init__.py
│ ├── models.py
│ ├── templates
│ │ └── boards
│ │ ├── about.html
│ │ ├── contact.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
├── manage.py
├── passenger_wsgi.py
├── static_files
│ ├── css
│ │ ├── main.css
│ └── js
├── _templates
Web servers handle this. What are you using as a server? For example, on Nginx we have paths for both static/media files.
server {
set $app_name 'APP_NAME';
set $root 'ROOT/$app_name';
listen 8000;
server_name 127.0.0.1;
location /static/ {
root $root/;
}
location /media/ {
root $root/attachments/;
}
location / {
include proxy_params;
proxy_pass http://unix:$root/$app_name.sock;
}
}
After hours of going through code line by line and inspired by an answer to this question I spotted this in wsgi.py (which didn't look right):
if settings.DEBUG:
application = StaticFilesHandler(get_wsgi_application())
else:
application = get_wsgi_application()
I have changed it to:
if settings.DEBUG:
application = get_wsgi_application()
else:
application = StaticFilesHandler(get_wsgi_application())
and now it finds the static files and works perfectly.
~/sinatra_projects/slim_app$ tree .
Here's the relevant part of the tree output:
.
├── models
├── public
│ ├── cool_stuff.html
│ ├── css
│ │ └── css.css
Here's the mostly irrelevant part:
│ ├── imgs
│ ├── js_ready.js
│ ├── mycss.css
│ └── tablesorter-master
│ ├── LICENSE
│ ├── README.md
│ ├── addons
│ │ └── pager
│ │ ├── jquery.tablesorter.pager.css
│ │ └── jquery.tablesorter.pager.js
│ ├── bower.json
│ ├── build
│ │ ├── ParseMaster.js
│ │ ├── js.jar
│ │ ├── jsmin.js
│ │ ├── min.js
│ │ ├── pack.js
│ │ ├── packer.js
│ │ └── writeFile.js
│ ├── build.xml
│ ├── changelog
│ ├── docs
│ │ ├── assets
│ │ │ └── ajax-content.html
│ │ ├── css
│ │ │ └── jq.css
│ │ ├── example-ajax.html
│ │ ├── example-attribute-sort.html
│ │ ├── example-empty-table.html
│ │ ├── example-extending-defaults.html
│ │ ├── example-meta-headers.html
│ │ ├── example-meta-parsers.html
│ │ ├── example-meta-sort-list.html
│ │ ├── example-option-debug.html
│ │ ├── example-option-digits.html
│ │ ├── example-option-sort-force.html
│ │ ├── example-option-sort-key.html
│ │ ├── example-option-sort-list.html
│ │ ├── example-option-sort-order.html
│ │ ├── example-option-text-extraction.html
│ │ ├── example-options-headers.html
│ │ ├── example-pager.html
│ │ ├── example-parsers.html
│ │ ├── example-trigger-sort.html
│ │ ├── example-triggers.html
│ │ ├── example-update-cell.html
│ │ ├── example-widgets.html
│ │ ├── img
│ │ │ └── external.png
│ │ ├── index.html
│ │ └── js
│ │ ├── docs.js
│ │ └── examples.js
│ ├── jquery-latest.js
│ ├── jquery.metadata.js
│ ├── jquery.tablesorter.js
│ ├── jquery.tablesorter.min.js
│ ├── package.json
│ └── themes
│ ├── blue
│ │ ├── asc.gif
│ │ ├── bg.gif
│ │ ├── blue.zip
│ │ ├── desc.gif
│ │ └── style.css
│ └── green
│ ├── asc.png
│ ├── bg.png
│ ├── desc.png
│ ├── green.zip
│ └── style.css
├── routes.rb
├── themes
│ ├── blue
│ │ ├── asc.gif
│ │ ├── bg.gif
│ │ ├── blue.zip
│ │ ├── desc.gif
│ │ └── style.css
│ └── green
│ ├── asc.png
│ ├── bg.png
│ ├── desc.png
│ ├── green.zip
│ └── style.css
└── views
├── components
│ └── _date.slim
├── index.slim
├── index_with_partials.slim
├── layout.slim
├── xindex.slim
├── xlayout.erb
├── xlayout.slim
└── yindex.erb
21 directories, 79 files
Here's slim_app/routes.rb:
require 'sinatra'
require 'slim'
get '/' do
slim :index
end
Here's slim_app/views/layout.slim:
doctype html
html
head
meta charset="utf-8"
title Test
link rel="stylesheet" type='text/css' src="/css/css.css")
body
h1 This is the Layout. Find me in your_app/views/layout.slim
== yield
Here's slim_app/public/css/css.css:
div {
background-color: red;
font-weight: 900;
}
h1 {
background-color: blue;
}
Here's slim_app/views/index.slim:
div Hello
div Goodbye
No matter what path I use for the css file, this is always the result:
You need href for link, not src, so you want something like this:
link rel="stylesheet" type='text/css' href="/css/css.css"
(script uses src – a confusing difference we seem to be stuck with.)
Imagine a file structure like this:
test
├── a
│ ├── 0
│ │ ├── file0.rtf
│ │ ├── file0.txt
│ │ ├── file1.rtf
│ │ ├── file1.txt
│ │ ├── file2.rtf
│ │ └── file2.txt
│ ├── 1
│ │ ├── file0.rtf
│ │ ├── file0.txt
│ │ ├── file1.rtf
│ │ ├── file1.txt
│ │ ├── file2.rtf
│ │ └── file2.txt
│ ├── 2
│ │ ├── file0.rtf
│ │ ├── file0.txt
│ │ ├── file1.rtf
│ │ ├── file1.txt
│ │ ├── file2.rtf
│ │ └── file2.txt
│ └── 3
│ ├── file0.rtf
│ ├── file0.txt
│ ├── file1.rtf
│ ├── file1.txt
│ ├── file2.rtf
│ └── file2.txt
└── b
├── 0
│ ├── file0.rtf
│ ├── file0.txt
│ ├── file1.rtf
│ ├── file1.txt
│ ├── file2.rtf
│ └── file2.txt
├── 1
│ ├── file0.rtf
│ ├── file0.txt
│ ├── file1.rtf
│ ├── file1.txt
│ ├── file2.rtf
│ └── file2.txt
├── 2
│ ├── file0.rtf
│ ├── file0.txt
│ ├── file1.rtf
│ ├── file1.txt
│ ├── file2.rtf
│ └── file2.txt
└── 3
├── file0.rtf
├── file0.txt
├── file1.rtf
├── file1.txt
├── file2.rtf
└── file2.txt
Where I do not know the real names of a and b. Nevertheless, I want to copy all *.txt files from subfolders of a and b (however they are named) if they are in the subfolder 0.
It kind of works if I am using
rsync -avz --include=*/ --include='*/0/*.txt' --exclude=* test/ test2/
However, rsync creates empty folders 1, 2, 3, which I would like to avoid. How do I do this?
Output from the rsync command above:
sending incremental file list
a/
a/0/
a/0/file0.txt
a/0/file1.txt
a/0/file2.txt
a/1/
a/2/
a/3/
b/
b/0/
b/0/file0.txt
b/0/file1.txt
b/0/file2.txt
b/1/
b/2/
b/3/
I want
sending incremental file list
a/
a/0/
a/0/file0.txt
a/0/file1.txt
a/0/file2.txt
b/
b/0/
b/0/file0.txt
b/0/file1.txt
b/0/file2.txt
It turns out the answer is simple. Just adding the --prune-empty-dirs flag does the trick.
rsync -avz --include=*/ --include='*/0/*.txt' --exclude=* --prune-empty-dirs test1/ test2/
That is what I wanted.
Is there some particular approach to ensure that an EJB module gets deployed to a web app correctly in Netbeans?
I'm coming at the EJB cookbook example, to invoke the Session Bean from the servlet. I cleared the glassfish output in Netbeans, did a clean-compile and run:
INFO: visiting unvisited references
INFO: visiting unvisited references
SEVERE: Class [ Lpakt/Salutation; ] not found. Error while loading [ class pakt.SalutationServlet ]
INFO: visiting unvisited references
INFO: Loading application [SalutationApplication-war] at [/SalutationApplication-war]
INFO: SalutationApplication-war was successfully deployed in 382 milliseconds.
INFO: processRequest..
WARNING: StandardWrapperValve[SalutationServlet]: Servlet.service() for servlet SalutationServlet threw exception
java.lang.NoClassDefFoundError: pakt/Salutation
at pakt.SalutationServlet.processRequest(SalutationServlet.java:30)
at pakt.SalutationServlet.doGet(SalutationServlet.java:45)
Why isn't the servlet loading pakt.Salutation?
the clean structure (uncompiled):
SalutationApplication/
├── build.xml
├── nbproject
│ ├── ant-deploy.xml
│ ├── build-impl.xml
│ ├── genfiles.properties
│ ├── private
│ │ └── private.properties
│ ├── project.properties
│ └── project.xml
├── SalutationApplication-ejb
│ ├── build.xml
│ ├── nbproject
│ │ ├── ant-deploy.xml
│ │ ├── build-impl.xml
│ │ ├── genfiles.properties
│ │ ├── private
│ │ │ └── private.properties
│ │ ├── project.properties
│ │ └── project.xml
│ └── src
│ ├── conf
│ │ └── MANIFEST.MF
│ └── java
│ └── pakt
│ ├── LocalBean.java
│ ├── RemoteBean.java
│ └── Salutation.java
├── SalutationApplication-war
│ ├── build.xml
│ ├── nbproject
│ │ ├── ant-deploy.xml
│ │ ├── build-impl.xml
│ │ ├── genfiles.properties
│ │ ├── private
│ │ │ └── private.properties
│ │ ├── project.properties
│ │ └── project.xml
│ ├── src
│ │ ├── conf
│ │ │ └── MANIFEST.MF
│ │ └── java
│ │ └── pakt
│ │ └── SalutationServlet.java
│ └── web
│ ├── index.html
│ └── WEB-INF
│ └── web.xml
└── src
└── conf
└── MANIFEST.MF
20 directories, 30 files
servlet:
package pakt;
import java.io.IOException;
import java.io.PrintWriter;
import javax.ejb.EJB;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
#WebServlet(urlPatterns = {"/SalutationServlet"})
public class SalutationServlet extends HttpServlet {
#EJB
private Salutation salutation;
protected void processRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
System.out.println("processRequest..");
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet SalutationServlet</title>");
out.println("</head>");
out.println("<body>");
out.println("<h1>"
+ salutation.getFormalSalutation("Sherlock Holmes")
+ "</h1>");
out.println("</body>");
out.println("</html>");
} finally {
out.flush();
out.close();
}
}
#Override
protected void doGet(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
#Override
protected void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}
package pakt;
import javax.ejb.Stateless;
import javax.ejb.LocalBean;
#LocalBean
#Stateless(mappedName = "salutationBean")
public class Salutation implements RemoteBean {
public String getFormalSalutation(String name) {
return "Dear " + name;
}
public String getInformalSalutation(String name) {
return "Hi " + name;
}
#Override
public void myRemote() {
System.out.println("myRemote..");
}
}
the web.xml file:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" 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/web-app_3_1.xsd">
<servlet>
<servlet-name>SalutationServlet</servlet-name>
<servlet-class>pakt.SalutationServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>SalutationServlet</servlet-name>
<url-pattern>/SalutationServlet</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
</web-app>
-------------------------------------------edit-----------------------------------
additional structure of the app:
thufir#dur:~$
thufir#dur:~$ tree NetBeansProjects/SalutationApplication
NetBeansProjects/SalutationApplication
├── build
│ ├── META-INF
│ │ └── MANIFEST.MF
│ ├── SalutationApplication-ejb.jar
│ └── SalutationApplication-war.war
├── build.xml
├── dist
│ └── SalutationApplication.ear
├── nbproject
│ ├── ant-deploy.xml
│ ├── build-impl.xml
│ ├── genfiles.properties
│ ├── private
│ │ └── private.properties
│ ├── project.properties
│ └── project.xml
├── SalutationApplication-ejb
│ ├── build
│ │ ├── classes
│ │ │ ├── META-INF
│ │ │ │ └── MANIFEST.MF
│ │ │ └── pakt
│ │ │ ├── Salutation.class
│ │ │ └── SalutationLocal.class
│ │ ├── empty
│ │ └── generated-sources
│ │ └── ap-source-output
│ ├── build.xml
│ ├── dist
│ │ └── SalutationApplication-ejb.jar
│ ├── nbproject
│ │ ├── ant-deploy.xml
│ │ ├── build-impl.xml
│ │ ├── genfiles.properties
│ │ ├── private
│ │ │ └── private.properties
│ │ ├── project.properties
│ │ └── project.xml
│ └── src
│ ├── conf
│ │ └── MANIFEST.MF
│ └── java
│ └── pakt
│ ├── Salutation.java
│ └── SalutationLocal.java
├── SalutationApplication-war
│ ├── build
│ │ ├── empty
│ │ ├── generated-sources
│ │ │ └── ap-source-output
│ │ └── web
│ │ ├── index.html
│ │ ├── META-INF
│ │ │ └── MANIFEST.MF
│ │ └── WEB-INF
│ │ ├── classes
│ │ │ ├── pakt
│ │ │ └── servlet
│ │ │ └── SalutationServlet.class
│ │ └── web.xml
│ ├── build.xml
│ ├── dist
│ │ └── SalutationApplication-war.war
│ ├── nbproject
│ │ ├── ant-deploy.xml
│ │ ├── build-impl.xml
│ │ ├── genfiles.properties
│ │ ├── private
│ │ │ └── private.properties
│ │ ├── project.properties
│ │ └── project.xml
│ ├── src
│ │ ├── conf
│ │ │ └── MANIFEST.MF
│ │ └── java
│ │ ├── pakt
│ │ └── servlet
│ │ └── SalutationServlet.java
│ └── web
│ ├── index.html
│ └── WEB-INF
│ └── web.xml
└── src
└── conf
└── MANIFEST.MF
43 directories, 42 files
thufir#dur:~$
thufir#dur:~$ jar -tf NetBeansProjects/SalutationApplication/SalutationApplication-war/dist/SalutationApplication-war.war
META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/classes/
WEB-INF/classes/pakt/
WEB-INF/classes/servlet/
WEB-INF/classes/servlet/SalutationServlet.class
WEB-INF/web.xml
index.html
thufir#dur:~$
thufir#dur:~$ jar -tf NetBeansProjects/SalutationApplication/SalutationApplication-ejb/dist/SalutationApplication-ejb.jar
META-INF/
META-INF/MANIFEST.MF
pakt/
pakt/Salutation.class
pakt/SalutationLocal.class
thufir#dur:~$
thufir#dur:~$
this is how the application builds.
I started from scrach as so:
NetBeansProjects/SalutationApp
├── build
│ ├── META-INF
│ │ └── MANIFEST.MF
│ ├── SalutationApp-ejb.jar
│ └── SalutationApp-war.war
├── build.xml
├── dist
│ └── gfdeploy
│ └── SalutationApp
│ ├── META-INF
│ │ └── MANIFEST.MF
│ ├── SalutationApp-ejb_jar
│ │ ├── ejb
│ │ │ └── Hello.class
│ │ └── META-INF
│ │ └── MANIFEST.MF
│ └── SalutationApp-war_war
│ ├── index.html
│ ├── META-INF
│ │ └── MANIFEST.MF
│ └── WEB-INF
│ ├── classes
│ │ └── srv
│ │ └── HelloServlet.class
│ └── web.xml
├── nbproject
│ ├── ant-deploy.xml
│ ├── build-impl.xml
│ ├── genfiles.properties
│ ├── private
│ │ └── private.properties
│ ├── project.properties
│ └── project.xml
├── SalutationApp-ejb
│ ├── build
│ │ ├── classes
│ │ │ ├── ejb
│ │ │ │ └── Hello.class
│ │ │ └── META-INF
│ │ │ └── MANIFEST.MF
│ │ ├── empty
│ │ └── generated-sources
│ │ └── ap-source-output
│ ├── build.xml
│ ├── dist
│ │ └── SalutationApp-ejb.jar
│ ├── nbproject
│ │ ├── ant-deploy.xml
│ │ ├── build-impl.xml
│ │ ├── genfiles.properties
│ │ ├── private
│ │ │ └── private.properties
│ │ ├── project.properties
│ │ └── project.xml
│ └── src
│ ├── conf
│ │ └── MANIFEST.MF
│ └── java
│ └── ejb
│ └── Hello.java
├── SalutationApp-war
│ ├── build
│ │ ├── empty
│ │ ├── generated-sources
│ │ │ └── ap-source-output
│ │ └── web
│ │ ├── index.html
│ │ ├── META-INF
│ │ │ └── MANIFEST.MF
│ │ └── WEB-INF
│ │ ├── classes
│ │ │ └── srv
│ │ │ └── HelloServlet.class
│ │ └── web.xml
│ ├── build.xml
│ ├── dist
│ │ └── SalutationApp-war.war
│ ├── nbproject
│ │ ├── ant-deploy.xml
│ │ ├── build-impl.xml
│ │ ├── genfiles.properties
│ │ ├── private
│ │ │ └── private.properties
│ │ ├── project.properties
│ │ └── project.xml
│ ├── src
│ │ ├── conf
│ │ │ └── MANIFEST.MF
│ │ └── java
│ │ └── srv
│ │ └── HelloServlet.java
│ └── web
│ ├── index.html
│ └── WEB-INF
│ └── web.xml
└── src
└── conf
└── MANIFEST.MF
52 directories, 46 files
I think that the only difference was in the sequence of clicking. I right clicked "clean" on the ejb and war projects, then the main application, and then hit "run" on the overall project.
I think that this then fixed the packaging...?
although the .war file seems quite similar, aside from some naming changes:
thufir#dur:~$
thufir#dur:~$ jar -tf NetBeansProjects/SalutationApp/SalutationApp-war/dist/SalutationApp-war.war
META-INF/
META-INF/MANIFEST.MF
WEB-INF/
WEB-INF/classes/
WEB-INF/classes/srv/
WEB-INF/classes/srv/HelloServlet.class
WEB-INF/web.xml
index.html
thufir#dur:~$
I'm not quite sure why this example runs where the other didn't aside, from, perhaps, clicking "clean" and "run" on different sub-projects in error.