Tuesday 13 November 2018

Caused by: java.lang.ClassNotFoundException: javax.jms.JMSContext


I was also facing the same issue when I moved from spring-3.0 to spring-5.0 while using Tomcat-7 to deploy my application. I added below maven dependency in pom.xml file and it got resolved.
<dependency>
    <groupId>javax.jms</groupId>
    <artifactId>javax.jms-api</artifactId>
    <version>2.0.1</version>
</dependency>
The root cause I found is, UserCredentialsConnectionFactoryAdapter class provided by spring-jms-5.0.2.RELEASE.jar was using JMSContext class internally. This class was not available in jms-1.1.jar which I was using with spring-jms-3.2.4.jar.
So I replaced jms-1.1.jar with javax.jms-api-2.0.1.jar
I would suggest you to add/upgrade your jms jar as mentioned above according to you spring version. 

Hope this works!

Sunday 16 September 2018

Hello World Nest js


Follow below URL for prerequisite i.e install NPM on your system

https://librakblog.blogspot.com/p/angular-456-set-up-environment.htm

Step 1 : Create a new directory anywhere you want in your PC.

Step 2 : Open command prompt window and enter below command to execute.

D:\Rakesh_kumar_Singhania\IonicFrameWork\NestJs>npm i -g @nestjs/cli

this will get all dependency for your Nest Js project.

Step 3:  Generate new project using below command

D:\Rakesh_kumar_Singhania\IonicFrameWork\NestJs>npm new firstProject


Step 3: This command will ask for few parameters like below
just enter all required details as per your specifications.

D:\Rakesh_kumar_Singhania\IonicFrameWork\NestJs>nest new project

⚡️  Creating your Nest project...
🙌  We have to collect additional information:

? description : FirstProject
? version : 1.0.0
? author : rakeshkumar.singhania

💥  Thank you for your time!


This will also generate few files for you to start a new project and also ask for your preference between NPM or YARN.

Choose according to your need and project setup.

As I have used NPM so I have selected NPM as a build tool here.





Once process is completed your screen look like above screen with all settings.






Wednesday 8 August 2018

Configuration 'prod' could not be found

Probem:

I am trying to serve the app via configuration for prod in Angular 6 using below command.


ng serve --configuration=prod
But it gives me below error :

Configuration 'prod' could not be found in project 'platform-ui'.

Error: Configuration 'prod' could not be found in project 'platform-ui'.



Solution :

If you look at your angular.json file, you'll see that you have finer control over settings for each configuration.

Now look for serve tag in json

"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "platform-ui:build"
},

and add configuration for your custom server like this :


"configurations": {
"production": {
"browserTarget": "platform-ui:build:production"
},
"qa": {
"browserTarget": "platform-ui:build:qa"
},


now try to run below command again

ng serve --configuration=prod





Thursday 2 August 2018

Get location details in angular 5


The Location class has prepareExternalUrl() that takes base href into account.

You can also try to inject 


  
constructor(@Inject(APP_BASE_HREF) href:string){}



It seems APP_BASE_HREF can't be injected anymore without explicitly providing it.


PlatformLocation 


  • Provides more details about the URL
  • Service available in Angular 5+ apps that makes it easy to interact with the current URL path.
  • Service can come-in really handy when coupled with the router to perform certain operations.


you can get URL like this.

 constructor(platformLocation: PlatformLocation) {

    console.log((platformLocation as any).location);

    console.log((platformLocation as any).location.href);

    console.log((platformLocation as any).location.origin);
  }



Tuesday 17 July 2018

Create a new component in angular

If you are Not aware of basis environment set up and Hello world of angular please go through below links for the context.


1 . angular-4/5/6-set-up-environment
2 . angular-5-hello-world-step-by-step


Above links help us in creating ready made application which angular CLI provide us but now we want a component of our own.


Step 1:  

Creating a Custom Component

navigate to your folder structure where you want to create your custom component
and then run below command

ng g component customHelloWorld

like this :

D:\Rakesh_kumar_Singhania\Angular5HelloWorld\hello-world-app\src\app>
ng g component customHelloWorld


This command will create your component and also it make sure to mark an entry in your app.module.ts file.

app.module.ts -- This file holds all the source required by the project which include all the imports of the components.

below is the snapshot of generated files :



Beauty of command ng g component customHelloWorld is 

This command generated 4 for the component :

1 . HTML file of your component
2. Test file for your component
3. TS file for writing your logic.
4. CSS file for styling.


Step 2:  


Open auto generated file custom-hello-world.component.ts.


@Component({
  selector: 'app-custom-hello-world',
  templateUrl: './custom-hello-world.component.html',
  styleUrls: ['./custom-hello-world.component.css']
})
export class CustomHelloWorldComponent implements OnInit {

  constructor() { }

  ngOnInit() {   
   console.log("hello");
  }
}


and and modify custom-hello-world.component.html according to your need.


<p>
  custom-hello-world works!
</p>


Below code is important in sense of mapping your HTML file and CSS file specific to this component.


@Component({
  selector: 'app-custom-hello-world',
  templateUrl: './custom-hello-world.component.html',
  styleUrls: ['./custom-hello-world.component.css']
})






So whenever you use app-custom-hello-world selector in any of your HTML it will render the
HTML part of custom-hello-world.component.html.



Lets use app-custom-hello-world  selector tag in our app.component.html.


app.component.html
<!--The content below is only a placeholder and can be replaced.-->
<div style="text-align:center">
  <h1>
    Welcome to Custom component {{ title }}!
  </h1>
 <app-custom-hello-world></app-custom-hello-world>
</div>


Start the server using

 ng serve 


Hit on the url http://localhost:4200


Output :











Angular 5 Hello world step by step

Step 1: Prerequisites


Install Node.js & npm

Angular 4/5/6 set up environment


Install Angular CLI

Creating a new Angular app is a bit tedious job especially when you are new to Typescript as there will be lot of initial configurations involved. In order make it simpler Google came up with the utility called Angular CLI, using which we can create and manage our app from command line itself


In order to install Angular CLI open Node.js command prompt/command prompt and run the below command

npm install -g @angular/cli


Install Code Editor

There are multiple code editors available in market

1. Microsoft Visual Code Studio
2. Brackets
3. Notepad++,
4. Sublime Text

As I m Fond of eclipse so I have installed angular plugin in eclipse as Angular editor.


Step 2: Create Project

Lets build our First Angular 5 Hello World application


Create a new folder with folder name “Angular5HelloWorld” anywhere you want.

Open command prompt and navigate to the folder.


Use the ng new command to create our Hello World Angular Project ng new hello-world-app

Ng stands for aNGular. NG is a core module, and this module contains all the directives that comes built in with the AngularJS library file.

D:\Rakesh_kumar_Singhania\Angular5HelloWorld>ng new hello-world-app


In case you get error that 'ng' is not recognized command

To solve that go to :

Control Panel > User accounts > Change my environmnet variables

and add the path to your AppData\Roaming\npm, in my case it was

C:\Users\rakeshkumar\AppData\Roaming\npm


Above command ng new hello-world-app creates a MAGIC...!!

This command add 1102 packages and all required dependencies for your first project.

Now your project 'hello-world-app' is successfully created.



Step 3: Run our first application

Navigate to your newly created project and run below command to run your application.

D:\Rakesh_kumar_Singhania\Angular5HelloWorld\hello-world-app>ng serve

This command will start the server and will launch the default Angular Application build by Angular CLI.


If you see above screen after running command then congratulations everything is fine with your application and your are good to go.

Default url to launch application is : http://localhost:4200/


Step 4 :Output








Next :create a customize component
http://librakblog.blogspot.com/2018/07/create-new-component-in-angular.html










Sunday 8 July 2018

TypeError: Cannot read property 'thisCompilation' of undefined



Follow these steps one by one  to resolve the error on windows/linux machine


npm i -g @angular/cli@latest

rm -rf node_modules / rd /s /q node_modules 

npm cache clear --force

npm cache verify

npm install

npm uninstall webpack

npm install --save-dev --save-exact @angular/cli@latest



You might get below error also 


webpack/lib/node/NodeTemplatePlugin'


Solution 
npm remove webpack -g

npm i webpack --save-dev

Monday 2 July 2018

In MemoryDatabase H2 with SpringBoot


An in memory database is created when an application starts up and destroyed when the application is stopped.
That means there is no persistence of data and every time you restart or stop you application your saved data will be lost.

H2

H2 is one of the popular in memory databases. Spring Boot has very good integration for H2.

H2 is a relational database management system written in Java. It can be embedded in Java applications or run in the client-server mode.

H2 also provides a web console to maintain the database.



Setting up a Spring Boot Project with H2


Spring Initializer http://start.spring.io/ is great tool to bootstrap your Spring Boot projects.









As shown in the image above, following steps have to be done

Launch Spring Initializer and choose the following

1. Choose com.rks as Group
2. Choose H2-console as Artifact
3. Choose following dependencies

  • Web
  • JPA
  • H2
  • DevTools


Click Generate Project.


Import the project into Eclipse.



File -> Import -> Existing Maven Project.


Create a simple Employee Entity with a primary key id.



package com.rks.h2console;
import javax.persistence.*;
@Entity
@Table(name = "employee")
public class Employee {

    @Id
    @Column
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    @Column
    private String firstName;
    @Column
    private String lastName;
    @Column
    private String email;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }
}

Edit properties file placed in 


/src/main/resources/application.properties

# Enabling H2 Console

spring.h2.console.enabled=true

# Show all queries
spring.jpa.show-sql=true

#DB configurations

spring.datasource.url=jdbc:h2:mem:rksdb

spring.datasource.driverClassName=org.h2.Driver

spring.datasource.username=test

spring.datasource.password=test

spring.jpa.database-platform=org.hibernate.dialect.H2Dialect


Run your application from file EmployeePortalApplication.

Right click -> RunAs ->JavaApplication

package com.rks.h2console;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class EmployeePortalApplication {
    public static void main(String[] args) {
        SpringApplication.run(EmployeePortalApplication.class, args);
    }
}


When you reload the application, you can launch up H2 Console at http://localhost:8080/h2-console.





 As soon as Spring Boot sees H2 in the class path, it auto configures a data source It knows that you are using an in memory database H2 and it uses the default url if you don’t provide one.


All tables will automatically get created by hibernate corresponding to the beans you have created but if you want to create table using sql scripts

You can also populate some data into student table by adding a file called data.sql


/src/main/resources/data.sql



create table student
(
   id integer not null,
   name varchar(255) not null,
   email varchar(255) not null,
   primary key(id)
);

insert into student
values(101,'Rakesh', 'rks@r.com');

insert into student
values(102,'Moni', 'moni@m.com');  

commit;



Source code


https://github.com/rsinghania/H2-Console-Db.git



Monday 25 June 2018

Intellij not showing GIT pull

This is a  problem which you faced when you have taken clone of your repository in your file explorer using tortoise git.

And then imported your project from file explorer to Intellij.
Like this



So to solve this problem follow these steps.

1. Enter alt+ctrl+S to open setting in intellij.

2. Find version control in the sidebar.

3.select your project which is not showing as part of the GIT.

4. Add your project in GIT.



Thursday 14 June 2018

How to read from CSV file in Java

We can read data from a Microsoft Excel CSV file, where all the values will be column separated, to do this we will use a third party jar i.e OpenCSV.

OpenCSV

OpenCSV is a lightweight java CSV parser. OpenCSV provides most of the basic features for CSV parsing. Some of the important classes in OpenCSV parser are;

CSVReader: This is the most important class in OpenCSV. CSVReader class is used to parse CSV files. We can parse CSV data line by line or read all data at once.
CSVWriter: CSVWriter class is used to write CSV data to Writer implementation. 
CsvToBean: CsvToBean is used when you want to convert CSV data to java objects.
BeanToCsv: BeanToCsv is used to export Java beans to CSV file.

OpenCSV Maven Dependency

Add OpenCSV jar using below maven dependency in POM.XML file, please refer the latest version from https://mvnrepository.com/artifact/com.opencsv/opencsv

<dependency>
    <groupId>com.opencsv</groupId>
    <artifactId>opencsv</artifactId>
    <version>3.8</version>
</dependency>

There are two ways to read a csv file using OpenCSV
  1. Reading into an array of strings
  2. Reading into beans


Sample data :





Create java bean class to hold CSV data and all fields mention in POJO class should match the column name of CSV file and they are case sensitive.

package com.Excel;

import com.opencsv.bean.CsvBindByName;

public class Employee {
    @CsvBindByName
    private String Empid;
    @CsvBindByName
    private String name;
    @CsvBindByName
    private String salary;
    @CsvBindByName
    private String valid;
    
    public String getEmpid() {
        return Empid;
    }
    public void setEmpid(String empid) {
        Empid = empid;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSalary() {
        return salary;
    }
    public void setSalary(String salary) {
        this.salary = salary;
    }
    public String getValid() {
        return valid;
    }
    public void setValid(String valid) {
        this.valid = valid;
    }
}

we are using @CsvBindByName annotation which identify all columns by name in CSV file.

Main class to read our CSV file.

package com.Excel;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.List;
import com.opencsv.bean.CsvToBeanBuilder;

public class ReadEXcel {

    @SuppressWarnings({ "unchecked", "rawtypes" })
    public static void main(String[] args) {
        List<Employee> beans;
        try {
            beans = new CsvToBeanBuilder(new FileReader("test.csv")).withType(Employee.class).build().parse();
            for (Employee employee : beans) {
                System.out.println(employee.getEmpid());
                System.out.println(employee.getName());
                System.out.println(employee.getSalary());
            }
        } catch (IllegalStateException e) {
            e.printStackTrace();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
}

This jar gives us freedom of type conversions (wrapped and unwrapped primitives and Strings) occur automatically which is a big relief as a programmer you don't bother about the type in excel as it will handle by your POJO class which you have created.




Friday 8 June 2018

The following untracked working tree files would be overwritten by checkout: .gitignore

Problem :

git.exe checkout master --

error: The following untracked working tree files would be overwritten by checkout:
.gitignore

Please move or remove them before you switch branches.
Aborting


Solution :

try running below commands one by one on your repository


git fetch --all


git reset --hard origin/master




this will reset your .gitignore file or any other file which is conflicting.

hope this helps .

Thursday 7 June 2018

Git Storing credentials failed No password provided in eclipse

Problem : 
Storing credentials failed No password provided
I am trying to clone repository from the github while pull it ask for password Then, and i entered wrong password ans store in secure wallet of eclipse Now when I tried to fetch or pull i got the error “not authorized”
However, when I used the advice and clicked “Change Credentials” or "remove credentials" I received the following error:
"Storing credentials failed No password provided"


Solution :
if you are using eclipse then you can solve this problem by following these steps.

Preferences > General > Security > Secure Storage > Contents




delete everything from the content tab
Now try again to pull from repository
enter your correct password and store in secure wallet storage of eclipse.


Hope this will work for you.

Tuesday 29 May 2018

Jenkins address already in use on Linux

Problem : Address already in use in Jenkins.


ava.io.IOException: Failed to start Jetty
        at winstone.Launcher.<init>(Launcher.java:156)
        at winstone.Launcher.main(Launcher.java:354)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at Main._main(Main.java:294)
        at Main.main(Main.java:132)
Caused by: java.net.BindException: Address already in use
        at sun.nio.ch.Net.bind0(Native Method)
        at sun.nio.ch.Net.bind(Net.java:437)
        at sun.nio.ch.Net.bind(Net.java:429)
        at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
        at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
        at org.eclipse.jetty.server.ServerConnector.open(ServerConnector.java:298)
        at org.eclipse.jetty.server.AbstractNetworkConnector.doStart(AbstractNetworkConnector.java:80)
        at org.eclipse.jetty.server.ServerConnector.doStart(ServerConnector.java:236)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at org.eclipse.jetty.server.Server.doStart(Server.java:431)
        at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:68)
        at winstone.Launcher.<init>(Launcher.java:154)
        ... 7 more


Solution :


lsof -i tcp:8080


This should list pids for applications using port 8080. Once you have the pid you can kill the process with kill command


kill -9 <PID> #where <PID> is the process id returned by lsof


This will solve the problem.


Spring boot with CORS

CORS (Cross-Origin Resource Sharing) errors occur when a web application running in a browser requests a resource from a different domain or...